! function(e, t) {
	"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define &&
		define.amd ? define(t) : (e = e || self).TIM = t()
}(this, (function() {
	function e(e, t) {
		var n = Object.keys(e);
		if (Object.getOwnPropertySymbols) {
			var o = Object.getOwnPropertySymbols(e);
			t && (o = o.filter((function(t) {
				return Object.getOwnPropertyDescriptor(e, t).enumerable
			}))), n.push.apply(n, o)
		}
		return n
	}

	function t(t) {
		for (var n = 1; n < arguments.length; n++) {
			var o = null != arguments[n] ? arguments[n] : {};
			n % 2 ? e(Object(o), !0).forEach((function(e) {
				s(t, e, o[e])
			})) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object
				.getOwnPropertyDescriptors(o)) : e(Object(o)).forEach((function(e) {
				Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(o, e))
			}))
		}
		return t
	}

	function n(e) {
		return (n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
			return typeof e
		} : function(e) {
			return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol
				.prototype ? "symbol" : typeof e
		})(e)
	}

	function o(e, t) {
		if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
	}

	function r(e, t) {
		for (var n = 0; n < t.length; n++) {
			var o = t[n];
			o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object
				.defineProperty(e, o.key, o)
		}
	}

	function a(e, t, n) {
		return t && r(e.prototype, t), n && r(e, n), e
	}

	function s(e, t, n) {
		return t in e ? Object.defineProperty(e, t, {
			value: n,
			enumerable: !0,
			configurable: !0,
			writable: !0
		}) : e[t] = n, e
	}

	function i(e, t) {
		if ("function" != typeof t && null !== t) throw new TypeError(
			"Super expression must either be null or a function");
		e.prototype = Object.create(t && t.prototype, {
			constructor: {
				value: e,
				writable: !0,
				configurable: !0
			}
		}), t && u(e, t)
	}

	function c(e) {
		return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
			return e.__proto__ || Object.getPrototypeOf(e)
		})(e)
	}

	function u(e, t) {
		return (u = Object.setPrototypeOf || function(e, t) {
			return e.__proto__ = t, e
		})(e, t)
	}

	function l() {
		if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
		if (Reflect.construct.sham) return !1;
		if ("function" == typeof Proxy) return !0;
		try {
			return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function() {}))), !0
		} catch (e) {
			return !1
		}
	}

	function d(e, t, n) {
		return (d = l() ? Reflect.construct : function(e, t, n) {
			var o = [null];
			o.push.apply(o, t);
			var r = new(Function.bind.apply(e, o));
			return n && u(r, n.prototype), r
		}).apply(null, arguments)
	}

	function p(e) {
		var t = "function" == typeof Map ? new Map : void 0;
		return (p = function(e) {
			if (null === e || (n = e, -1 === Function.toString.call(n).indexOf("[native code]")))
			return e;
			var n;
			if ("function" != typeof e) throw new TypeError(
				"Super expression must either be null or a function");
			if (void 0 !== t) {
				if (t.has(e)) return t.get(e);
				t.set(e, o)
			}

			function o() {
				return d(e, arguments, c(this).constructor)
			}
			return o.prototype = Object.create(e.prototype, {
				constructor: {
					value: o,
					enumerable: !1,
					writable: !0,
					configurable: !0
				}
			}), u(o, e)
		})(e)
	}

	function g(e, t) {
		if (null == e) return {};
		var n, o, r = function(e, t) {
			if (null == e) return {};
			var n, o, r = {},
				a = Object.keys(e);
			for (o = 0; o < a.length; o++) n = a[o], t.indexOf(n) >= 0 || (r[n] = e[n]);
			return r
		}(e, t);
		if (Object.getOwnPropertySymbols) {
			var a = Object.getOwnPropertySymbols(e);
			for (o = 0; o < a.length; o++) n = a[o], t.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable
				.call(e, n) && (r[n] = e[n])
		}
		return r
	}

	function h(e) {
		if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
		return e
	}

	function f(e, t) {
		return !t || "object" != typeof t && "function" != typeof t ? h(e) : t
	}

	function _(e) {
		var t = l();
		return function() {
			var n, o = c(e);
			if (t) {
				var r = c(this).constructor;
				n = Reflect.construct(o, arguments, r)
			} else n = o.apply(this, arguments);
			return f(this, n)
		}
	}

	function m(e, t) {
		return M(e) || function(e, t) {
			var n = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e[
			"@@iterator"];
			if (null == n) return;
			var o, r, a = [],
				s = !0,
				i = !1;
			try {
				for (n = n.call(e); !(s = (o = n.next()).done) && (a.push(o.value), !t || a.length !==
					t); s = !0);
			} catch (c) {
				i = !0, r = c
			} finally {
				try {
					s || null == n.return || n.return()
				} finally {
					if (i) throw r
				}
			}
			return a
		}(e, t) || I(e, t) || T()
	}

	function v(e) {
		return function(e) {
			if (Array.isArray(e)) return S(e)
		}(e) || y(e) || I(e) || function() {
			throw new TypeError(
				"Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
				)
		}()
	}

	function M(e) {
		if (Array.isArray(e)) return e
	}

	function y(e) {
		if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array
			.from(e)
	}

	function I(e, t) {
		if (e) {
			if ("string" == typeof e) return S(e, t);
			var n = Object.prototype.toString.call(e).slice(8, -1);
			return "Object" === n && e.constructor && (n = e.constructor.name), "Map" === n || "Set" === n ?
				Array.from(e) : "Arguments" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? S(e,
					t) : void 0
		}
	}

	function S(e, t) {
		(null == t || t > e.length) && (t = e.length);
		for (var n = 0, o = new Array(t); n < t; n++) o[n] = e[n];
		return o
	}

	function T() {
		throw new TypeError(
			"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
			)
	}

	function E(e, t) {
		var n = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
		if (!n) {
			if (Array.isArray(e) || (n = I(e)) || t && e && "number" == typeof e.length) {
				n && (e = n);
				var o = 0,
					r = function() {};
				return {
					s: r,
					n: function() {
						return o >= e.length ? {
							done: !0
						} : {
							done: !1,
							value: e[o++]
						}
					},
					e: function(e) {
						throw e
					},
					f: r
				}
			}
			throw new TypeError(
				"Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
				)
		}
		var a, s = !0,
			i = !1;
		return {
			s: function() {
				n = n.call(e)
			},
			n: function() {
				var e = n.next();
				return s = e.done, e
			},
			e: function(e) {
				i = !0, a = e
			},
			f: function() {
				try {
					s || null == n.return || n.return()
				} finally {
					if (i) throw a
				}
			}
		}
	}
	var D = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window :
		"undefined" != typeof global ? global : "undefined" != typeof self ? self : {};

	function k(e, t) {
		return e(t = {
			exports: {}
		}, t.exports), t.exports
	}
	var C = function(e) {
			return e && e.Math == Math && e
		},
		N = C("object" == typeof globalThis && globalThis) || C("object" == typeof window && window) || C(
			"object" == typeof self && self) || C("object" == typeof D && D) || function() {
			return this
		}() || Function("return this")(),
		A = function(e) {
			try {
				return !!e()
			} catch (t) {
				return !0
			}
		},
		O = !A((function() {
			return 7 != Object.defineProperty({}, 1, {
				get: function() {
					return 7
				}
			})[1]
		})),
		L = {}.propertyIsEnumerable,
		R = Object.getOwnPropertyDescriptor,
		w = {
			f: R && !L.call({
				1: 2
			}, 1) ? function(e) {
				var t = R(this, e);
				return !!t && t.enumerable
			} : L
		},
		b = function(e, t) {
			return {
				enumerable: !(1 & e),
				configurable: !(2 & e),
				writable: !(4 & e),
				value: t
			}
		},
		P = {}.toString,
		G = function(e) {
			return P.call(e).slice(8, -1)
		},
		U = "".split,
		F = A((function() {
			return !Object("z").propertyIsEnumerable(0)
		})) ? function(e) {
			return "String" == G(e) ? U.call(e, "") : Object(e)
		} : Object,
		q = function(e) {
			if (null == e) throw TypeError("Can't call method on " + e);
			return e
		},
		x = function(e) {
			return F(q(e))
		},
		V = function(e) {
			return "object" == typeof e ? null !== e : "function" == typeof e
		},
		K = function(e, t) {
			if (!V(e)) return e;
			var n, o;
			if (t && "function" == typeof(n = e.toString) && !V(o = n.call(e))) return o;
			if ("function" == typeof(n = e.valueOf) && !V(o = n.call(e))) return o;
			if (!t && "function" == typeof(n = e.toString) && !V(o = n.call(e))) return o;
			throw TypeError("Can't convert object to primitive value")
		},
		B = function(e) {
			return Object(q(e))
		},
		j = {}.hasOwnProperty,
		H = Object.hasOwn || function(e, t) {
			return j.call(B(e), t)
		},
		$ = N.document,
		Y = V($) && V($.createElement),
		z = function(e) {
			return Y ? $.createElement(e) : {}
		},
		W = !O && !A((function() {
			return 7 != Object.defineProperty(z("div"), "a", {
				get: function() {
					return 7
				}
			}).a
		})),
		J = Object.getOwnPropertyDescriptor,
		X = {
			f: O ? J : function(e, t) {
				if (e = x(e), t = K(t, !0), W) try {
					return J(e, t)
				} catch (n) {}
				if (H(e, t)) return b(!w.f.call(e, t), e[t])
			}
		},
		Q = function(e) {
			if (!V(e)) throw TypeError(String(e) + " is not an object");
			return e
		},
		Z = Object.defineProperty,
		ee = {
			f: O ? Z : function(e, t, n) {
				if (Q(e), t = K(t, !0), Q(n), W) try {
					return Z(e, t, n)
				} catch (o) {}
				if ("get" in n || "set" in n) throw TypeError("Accessors not supported");
				return "value" in n && (e[t] = n.value), e
			}
		},
		te = O ? function(e, t, n) {
			return ee.f(e, t, b(1, n))
		} : function(e, t, n) {
			return e[t] = n, e
		},
		ne = function(e, t) {
			try {
				te(N, e, t)
			} catch (n) {
				N[e] = t
			}
			return t
		},
		oe = N["__core-js_shared__"] || ne("__core-js_shared__", {}),
		re = Function.toString;
	"function" != typeof oe.inspectSource && (oe.inspectSource = function(e) {
		return re.call(e)
	});
	var ae, se, ie, ce = oe.inspectSource,
		ue = N.WeakMap,
		le = "function" == typeof ue && /native code/.test(ce(ue)),
		de = k((function(e) {
			(e.exports = function(e, t) {
				return oe[e] || (oe[e] = void 0 !== t ? t : {})
			})("versions", []).push({
				version: "3.15.2",
				mode: "global",
				copyright: "© 2021 Denis Pushkarev (zloirock.ru)"
			})
		})),
		pe = 0,
		ge = Math.random(),
		he = function(e) {
			return "Symbol(" + String(void 0 === e ? "" : e) + ")_" + (++pe + ge).toString(36)
		},
		fe = de("keys"),
		_e = function(e) {
			return fe[e] || (fe[e] = he(e))
		},
		me = {},
		ve = N.WeakMap;
	if (le || oe.state) {
		var Me = oe.state || (oe.state = new ve),
			ye = Me.get,
			Ie = Me.has,
			Se = Me.set;
		ae = function(e, t) {
			if (Ie.call(Me, e)) throw new TypeError("Object already initialized");
			return t.facade = e, Se.call(Me, e, t), t
		}, se = function(e) {
			return ye.call(Me, e) || {}
		}, ie = function(e) {
			return Ie.call(Me, e)
		}
	} else {
		var Te = _e("state");
		me[Te] = !0, ae = function(e, t) {
			if (H(e, Te)) throw new TypeError("Object already initialized");
			return t.facade = e, te(e, Te, t), t
		}, se = function(e) {
			return H(e, Te) ? e[Te] : {}
		}, ie = function(e) {
			return H(e, Te)
		}
	}
	var Ee = {
			set: ae,
			get: se,
			has: ie,
			enforce: function(e) {
				return ie(e) ? se(e) : ae(e, {})
			},
			getterFor: function(e) {
				return function(t) {
					var n;
					if (!V(t) || (n = se(t)).type !== e) throw TypeError("Incompatible receiver, " + e +
						" required");
					return n
				}
			}
		},
		De = k((function(e) {
			var t = Ee.get,
				n = Ee.enforce,
				o = String(String).split("String");
			(e.exports = function(e, t, r, a) {
				var s, i = !!a && !!a.unsafe,
					c = !!a && !!a.enumerable,
					u = !!a && !!a.noTargetGet;
				"function" == typeof r && ("string" != typeof t || H(r, "name") || te(r, "name", t),
						(s = n(r)).source || (s.source = o.join("string" == typeof t ? t : ""))),
					e !== N ? (i ? !u && e[t] && (c = !0) : delete e[t], c ? e[t] = r : te(e, t,
					r)) : c ? e[t] = r : ne(t, r)
			})(Function.prototype, "toString", (function() {
				return "function" == typeof this && t(this).source || ce(this)
			}))
		})),
		ke = N,
		Ce = function(e) {
			return "function" == typeof e ? e : void 0
		},
		Ne = function(e, t) {
			return arguments.length < 2 ? Ce(ke[e]) || Ce(N[e]) : ke[e] && ke[e][t] || N[e] && N[e][t]
		},
		Ae = Math.ceil,
		Oe = Math.floor,
		Le = function(e) {
			return isNaN(e = +e) ? 0 : (e > 0 ? Oe : Ae)(e)
		},
		Re = Math.min,
		we = function(e) {
			return e > 0 ? Re(Le(e), 9007199254740991) : 0
		},
		be = Math.max,
		Pe = Math.min,
		Ge = function(e, t) {
			var n = Le(e);
			return n < 0 ? be(n + t, 0) : Pe(n, t)
		},
		Ue = function(e) {
			return function(t, n, o) {
				var r, a = x(t),
					s = we(a.length),
					i = Ge(o, s);
				if (e && n != n) {
					for (; s > i;)
						if ((r = a[i++]) != r) return !0
				} else
					for (; s > i; i++)
						if ((e || i in a) && a[i] === n) return e || i || 0;
				return !e && -1
			}
		},
		Fe = {
			includes: Ue(!0),
			indexOf: Ue(!1)
		},
		qe = Fe.indexOf,
		xe = function(e, t) {
			var n, o = x(e),
				r = 0,
				a = [];
			for (n in o) !H(me, n) && H(o, n) && a.push(n);
			for (; t.length > r;) H(o, n = t[r++]) && (~qe(a, n) || a.push(n));
			return a
		},
		Ve = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString",
			"toString", "valueOf"
		],
		Ke = Ve.concat("length", "prototype"),
		Be = {
			f: Object.getOwnPropertyNames || function(e) {
				return xe(e, Ke)
			}
		},
		je = {
			f: Object.getOwnPropertySymbols
		},
		He = Ne("Reflect", "ownKeys") || function(e) {
			var t = Be.f(Q(e)),
				n = je.f;
			return n ? t.concat(n(e)) : t
		},
		$e = function(e, t) {
			for (var n = He(t), o = ee.f, r = X.f, a = 0; a < n.length; a++) {
				var s = n[a];
				H(e, s) || o(e, s, r(t, s))
			}
		},
		Ye = /#|\.prototype\./,
		ze = function(e, t) {
			var n = Je[We(e)];
			return n == Qe || n != Xe && ("function" == typeof t ? A(t) : !!t)
		},
		We = ze.normalize = function(e) {
			return String(e).replace(Ye, ".").toLowerCase()
		},
		Je = ze.data = {},
		Xe = ze.NATIVE = "N",
		Qe = ze.POLYFILL = "P",
		Ze = ze,
		et = X.f,
		nt = function(e, t) {
			var n, o, r, a, s, i = e.target,
				c = e.global,
				u = e.stat;
			if (n = c ? N : u ? N[i] || ne(i, {}) : (N[i] || {}).prototype)
				for (o in t) {
					if (a = t[o], r = e.noTargetGet ? (s = et(n, o)) && s.value : n[o], !Ze(c ? o : i + (u ?
							"." : "#") + o, e.forced) && void 0 !== r) {
						if (typeof a == typeof r) continue;
						$e(a, r)
					}(e.sham || r && r.sham) && te(a, "sham", !0), De(n, o, a, e)
				}
		},
		ot = "\t\n\v\f\r                　\u2028\u2029\ufeff",
		rt = "[" + ot + "]",
		at = RegExp("^" + rt + rt + "*"),
		st = RegExp(rt + rt + "*$"),
		it = function(e) {
			return function(t) {
				var n = String(q(t));
				return 1 & e && (n = n.replace(at, "")), 2 & e && (n = n.replace(st, "")), n
			}
		},
		ct = {
			start: it(1),
			end: it(2),
			trim: it(3)
		},
		ut = ct.trim,
		lt = N.parseInt,
		dt = /^[+-]?0[Xx]/,
		pt = 8 !== lt(ot + "08") || 22 !== lt(ot + "0x16") ? function(e, t) {
			var n = ut(String(e));
			return lt(n, t >>> 0 || (dt.test(n) ? 16 : 10))
		} : lt;
	nt({
		global: !0,
		forced: parseInt != pt
	}, {
		parseInt: pt
	});
	var gt, ht = Object.keys || function(e) {
			return xe(e, Ve)
		},
		ft = O ? Object.defineProperties : function(e, t) {
			Q(e);
			for (var n, o = ht(t), r = o.length, a = 0; r > a;) ee.f(e, n = o[a++], t[n]);
			return e
		},
		_t = Ne("document", "documentElement"),
		mt = _e("IE_PROTO"),
		vt = function() {},
		Mt = function(e) {
			return "<script>" + e + "<\/script>"
		},
		yt = function() {
			try {
				gt = document.domain && new ActiveXObject("htmlfile")
			} catch (o) {}
			var e, t;
			yt = gt ? function(e) {
				e.write(Mt("")), e.close();
				var t = e.parentWindow.Object;
				return e = null, t
			}(gt) : ((t = z("iframe")).style.display = "none", _t.appendChild(t), t.src = String(
					"javascript:"), (e = t.contentWindow.document).open(), e.write(Mt("document.F=Object")),
				e.close(), e.F);
			for (var n = Ve.length; n--;) delete yt.prototype[Ve[n]];
			return yt()
		};
	me[mt] = !0;
	var It = Object.create || function(e, t) {
		var n;
		return null !== e ? (vt.prototype = Q(e), n = new vt, vt.prototype = null, n[mt] = e) : n = yt(),
			void 0 === t ? n : ft(n, t)
	};
	nt({
		target: "Object",
		stat: !0,
		sham: !O
	}, {
		create: It
	});
	var St, Tt, Et = function(e) {
			if ("function" != typeof e) throw TypeError(String(e) + " is not a function");
			return e
		},
		Dt = function(e, t, n) {
			if (Et(e), void 0 === t) return e;
			switch (n) {
				case 0:
					return function() {
						return e.call(t)
					};
				case 1:
					return function(n) {
						return e.call(t, n)
					};
				case 2:
					return function(n, o) {
						return e.call(t, n, o)
					};
				case 3:
					return function(n, o, r) {
						return e.call(t, n, o, r)
					}
			}
			return function() {
				return e.apply(t, arguments)
			}
		},
		kt = Array.isArray || function(e) {
			return "Array" == G(e)
		},
		Ct = Ne("navigator", "userAgent") || "",
		Nt = N.process,
		At = Nt && Nt.versions,
		Ot = At && At.v8;
	Ot ? Tt = (St = Ot.split("."))[0] < 4 ? 1 : St[0] + St[1] : Ct && (!(St = Ct.match(/Edge\/(\d+)/)) || St[
		1] >= 74) && (St = Ct.match(/Chrome\/(\d+)/)) && (Tt = St[1]);
	var Lt = Tt && +Tt,
		Rt = !!Object.getOwnPropertySymbols && !A((function() {
			var e = Symbol();
			return !String(e) || !(Object(e) instanceof Symbol) || !Symbol.sham && Lt && Lt < 41
		})),
		wt = Rt && !Symbol.sham && "symbol" == typeof Symbol.iterator,
		bt = de("wks"),
		Pt = N.Symbol,
		Gt = wt ? Pt : Pt && Pt.withoutSetter || he,
		Ut = function(e) {
			return H(bt, e) && (Rt || "string" == typeof bt[e]) || (Rt && H(Pt, e) ? bt[e] = Pt[e] : bt[e] = Gt(
				"Symbol." + e)), bt[e]
		},
		Ft = Ut("species"),
		qt = function(e, t) {
			var n;
			return kt(e) && ("function" != typeof(n = e.constructor) || n !== Array && !kt(n.prototype) ? V(
				n) && null === (n = n[Ft]) && (n = void 0) : n = void 0), new(void 0 === n ? Array : n)(
				0 === t ? 0 : t)
		},
		xt = [].push,
		Vt = function(e) {
			var t = 1 == e,
				n = 2 == e,
				o = 3 == e,
				r = 4 == e,
				a = 6 == e,
				s = 7 == e,
				i = 5 == e || a;
			return function(c, u, l, d) {
				for (var p, g, h = B(c), f = F(h), _ = Dt(u, l, 3), m = we(f.length), v = 0, M = d || qt,
						y = t ? M(c, m) : n || s ? M(c, 0) : void 0; m > v; v++)
					if ((i || v in f) && (g = _(p = f[v], v, h), e))
						if (t) y[v] = g;
						else if (g) switch (e) {
					case 3:
						return !0;
					case 5:
						return p;
					case 6:
						return v;
					case 2:
						xt.call(y, p)
				} else switch (e) {
					case 4:
						return !1;
					case 7:
						xt.call(y, p)
				}
				return a ? -1 : o || r ? r : y
			}
		},
		Kt = {
			forEach: Vt(0),
			map: Vt(1),
			filter: Vt(2),
			some: Vt(3),
			every: Vt(4),
			find: Vt(5),
			findIndex: Vt(6),
			filterOut: Vt(7)
		},
		Bt = function(e, t) {
			var n = [][e];
			return !!n && A((function() {
				n.call(null, t || function() {
					throw 1
				}, 1)
			}))
		},
		jt = Kt.forEach,
		Ht = Bt("forEach") ? [].forEach : function(e) {
			return jt(this, e, arguments.length > 1 ? arguments[1] : void 0)
		};
	nt({
		target: "Array",
		proto: !0,
		forced: [].forEach != Ht
	}, {
		forEach: Ht
	});
	var $t = {
		CSSRuleList: 0,
		CSSStyleDeclaration: 0,
		CSSValueList: 0,
		ClientRectList: 0,
		DOMRectList: 0,
		DOMStringList: 0,
		DOMTokenList: 1,
		DataTransferItemList: 0,
		FileList: 0,
		HTMLAllCollection: 0,
		HTMLCollection: 0,
		HTMLFormElement: 0,
		HTMLSelectElement: 0,
		MediaList: 0,
		MimeTypeArray: 0,
		NamedNodeMap: 0,
		NodeList: 1,
		PaintRequestList: 0,
		Plugin: 0,
		PluginArray: 0,
		SVGLengthList: 0,
		SVGNumberList: 0,
		SVGPathSegList: 0,
		SVGPointList: 0,
		SVGStringList: 0,
		SVGTransformList: 0,
		SourceBufferList: 0,
		StyleSheetList: 0,
		TextTrackCueList: 0,
		TextTrackList: 0,
		TouchList: 0
	};
	for (var Yt in $t) {
		var zt = N[Yt],
			Wt = zt && zt.prototype;
		if (Wt && Wt.forEach !== Ht) try {
			te(Wt, "forEach", Ht)
		} catch (Hv) {
			Wt.forEach = Ht
		}
	}
	var Jt = A((function() {
		ht(1)
	}));
	nt({
		target: "Object",
		stat: !0,
		forced: Jt
	}, {
		keys: function(e) {
			return ht(B(e))
		}
	});
	var Xt = function(e) {
			var t = e.return;
			if (void 0 !== t) return Q(t.call(e)).value
		},
		Qt = function(e, t, n, o) {
			try {
				return o ? t(Q(n)[0], n[1]) : t(n)
			} catch (Hv) {
				throw Xt(e), Hv
			}
		},
		Zt = {},
		en = Ut("iterator"),
		tn = Array.prototype,
		nn = function(e) {
			return void 0 !== e && (Zt.Array === e || tn[en] === e)
		},
		on = function(e, t, n) {
			var o = K(t);
			o in e ? ee.f(e, o, b(0, n)) : e[o] = n
		},
		rn = {};
	rn[Ut("toStringTag")] = "z";
	var an = "[object z]" === String(rn),
		sn = Ut("toStringTag"),
		cn = "Arguments" == G(function() {
			return arguments
		}()),
		un = an ? G : function(e) {
			var t, n, o;
			return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof(n = function(e, t) {
					try {
						return e[t]
					} catch (Hv) {}
				}(t = Object(e), sn)) ? n : cn ? G(t) : "Object" == (o = G(t)) && "function" == typeof t
				.callee ? "Arguments" : o
		},
		ln = Ut("iterator"),
		dn = function(e) {
			if (null != e) return e[ln] || e["@@iterator"] || Zt[un(e)]
		},
		pn = function(e) {
			var t, n, o, r, a, s, i = B(e),
				c = "function" == typeof this ? this : Array,
				u = arguments.length,
				l = u > 1 ? arguments[1] : void 0,
				d = void 0 !== l,
				p = dn(i),
				g = 0;
			if (d && (l = Dt(l, u > 2 ? arguments[2] : void 0, 2)), null == p || c == Array && nn(p))
				for (n = new c(t = we(i.length)); t > g; g++) s = d ? l(i[g], g) : i[g], on(n, g, s);
			else
				for (a = (r = p.call(i)).next, n = new c; !(o = a.call(r)).done; g++) s = d ? Qt(r, l, [o.value,
					g
				], !0) : o.value, on(n, g, s);
			return n.length = g, n
		},
		gn = Ut("iterator"),
		hn = !1;
	try {
		var fn = 0,
			_n = {
				next: function() {
					return {
						done: !!fn++
					}
				},
				return: function() {
					hn = !0
				}
			};
		_n[gn] = function() {
			return this
		}, Array.from(_n, (function() {
			throw 2
		}))
	} catch (Hv) {}
	var mn = function(e, t) {
			if (!t && !hn) return !1;
			var n = !1;
			try {
				var o = {};
				o[gn] = function() {
					return {
						next: function() {
							return {
								done: n = !0
							}
						}
					}
				}, e(o)
			} catch (Hv) {}
			return n
		},
		vn = !mn((function(e) {
			Array.from(e)
		}));
	nt({
		target: "Array",
		stat: !0,
		forced: vn
	}, {
		from: pn
	});
	var Mn, yn, In, Sn = function(e) {
			return function(t, n) {
				var o, r, a = String(q(t)),
					s = Le(n),
					i = a.length;
				return s < 0 || s >= i ? e ? "" : void 0 : (o = a.charCodeAt(s)) < 55296 || o > 56319 || s +
					1 === i || (r = a.charCodeAt(s + 1)) < 56320 || r > 57343 ? e ? a.charAt(s) : o : e ? a
					.slice(s, s + 2) : r - 56320 + (o - 55296 << 10) + 65536
			}
		},
		Tn = {
			codeAt: Sn(!1),
			charAt: Sn(!0)
		},
		En = !A((function() {
			function e() {}
			return e.prototype.constructor = null, Object.getPrototypeOf(new e) !== e.prototype
		})),
		Dn = _e("IE_PROTO"),
		kn = Object.prototype,
		Cn = En ? Object.getPrototypeOf : function(e) {
			return e = B(e), H(e, Dn) ? e[Dn] : "function" == typeof e.constructor && e instanceof e
				.constructor ? e.constructor.prototype : e instanceof Object ? kn : null
		},
		Nn = Ut("iterator"),
		An = !1;
	[].keys && ("next" in (In = [].keys()) ? (yn = Cn(Cn(In))) !== Object.prototype && (Mn = yn) : An = !0), (
		null == Mn || A((function() {
			var e = {};
			return Mn[Nn].call(e) !== e
		}))) && (Mn = {}), H(Mn, Nn) || te(Mn, Nn, (function() {
		return this
	}));
	var On = {
			IteratorPrototype: Mn,
			BUGGY_SAFARI_ITERATORS: An
		},
		Ln = ee.f,
		Rn = Ut("toStringTag"),
		wn = function(e, t, n) {
			e && !H(e = n ? e : e.prototype, Rn) && Ln(e, Rn, {
				configurable: !0,
				value: t
			})
		},
		bn = On.IteratorPrototype,
		Pn = function() {
			return this
		},
		Gn = function(e, t, n) {
			var o = t + " Iterator";
			return e.prototype = It(bn, {
				next: b(1, n)
			}), wn(e, o, !1), Zt[o] = Pn, e
		},
		Un = Object.setPrototypeOf || ("__proto__" in {} ? function() {
			var e, t = !1,
				n = {};
			try {
				(e = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(n, []), t =
					n instanceof Array
			} catch (Hv) {}
			return function(n, o) {
				return Q(n),
					function(e) {
						if (!V(e) && null !== e) throw TypeError("Can't set " + String(e) +
							" as a prototype")
					}(o), t ? e.call(n, o) : n.__proto__ = o, n
			}
		}() : void 0),
		Fn = On.IteratorPrototype,
		qn = On.BUGGY_SAFARI_ITERATORS,
		xn = Ut("iterator"),
		Vn = function() {
			return this
		},
		Kn = function(e, t, n, o, r, a, s) {
			Gn(n, t, o);
			var i, c, u, l = function(e) {
					if (e === r && f) return f;
					if (!qn && e in g) return g[e];
					switch (e) {
						case "keys":
						case "values":
						case "entries":
							return function() {
								return new n(this, e)
							}
					}
					return function() {
						return new n(this)
					}
				},
				d = t + " Iterator",
				p = !1,
				g = e.prototype,
				h = g[xn] || g["@@iterator"] || r && g[r],
				f = !qn && h || l(r),
				_ = "Array" == t && g.entries || h;
			if (_ && (i = Cn(_.call(new e)), Fn !== Object.prototype && i.next && (Cn(i) !== Fn && (Un ? Un(i,
					Fn) : "function" != typeof i[xn] && te(i, xn, Vn)), wn(i, d, !0))), "values" == r && h &&
				"values" !== h.name && (p = !0, f = function() {
					return h.call(this)
				}), g[xn] !== f && te(g, xn, f), Zt[t] = f, r)
				if (c = {
						values: l("values"),
						keys: a ? f : l("keys"),
						entries: l("entries")
					}, s)
					for (u in c)(qn || p || !(u in g)) && De(g, u, c[u]);
				else nt({
					target: t,
					proto: !0,
					forced: qn || p
				}, c);
			return c
		},
		Bn = Tn.charAt,
		jn = Ee.set,
		Hn = Ee.getterFor("String Iterator");
	Kn(String, "String", (function(e) {
		jn(this, {
			type: "String Iterator",
			string: String(e),
			index: 0
		})
	}), (function() {
		var e, t = Hn(this),
			n = t.string,
			o = t.index;
		return o >= n.length ? {
			value: void 0,
			done: !0
		} : (e = Bn(n, o), t.index += e.length, {
			value: e,
			done: !1
		})
	}));
	var $n = Ut("species"),
		Yn = function(e) {
			return Lt >= 51 || !A((function() {
				var t = [];
				return (t.constructor = {})[$n] = function() {
					return {
						foo: 1
					}
				}, 1 !== t[e](Boolean).foo
			}))
		},
		zn = Ut("isConcatSpreadable"),
		Wn = Lt >= 51 || !A((function() {
			var e = [];
			return e[zn] = !1, e.concat()[0] !== e
		})),
		Jn = Yn("concat"),
		Xn = function(e) {
			if (!V(e)) return !1;
			var t = e[zn];
			return void 0 !== t ? !!t : kt(e)
		};
	nt({
		target: "Array",
		proto: !0,
		forced: !Wn || !Jn
	}, {
		concat: function(e) {
			var t, n, o, r, a, s = B(this),
				i = qt(s, 0),
				c = 0;
			for (t = -1, o = arguments.length; t < o; t++)
				if (Xn(a = -1 === t ? s : arguments[t])) {
					if (c + (r = we(a.length)) > 9007199254740991) throw TypeError(
						"Maximum allowed index exceeded");
					for (n = 0; n < r; n++, c++) n in a && on(i, c, a[n])
				} else {
					if (c >= 9007199254740991) throw TypeError("Maximum allowed index exceeded");
					on(i, c++, a)
				} return i.length = c, i
		}
	});
	var Qn = {
			SDK_READY: "sdkStateReady",
			SDK_NOT_READY: "sdkStateNotReady",
			SDK_DESTROY: "sdkDestroy",
			MESSAGE_RECEIVED: "onMessageReceived",
			MESSAGE_MODIFIED: "onMessageModified",
			MESSAGE_REVOKED: "onMessageRevoked",
			MESSAGE_READ_BY_PEER: "onMessageReadByPeer",
			CONVERSATION_LIST_UPDATED: "onConversationListUpdated",
			GROUP_LIST_UPDATED: "onGroupListUpdated",
			GROUP_SYSTEM_NOTICE_RECEIVED: "receiveGroupSystemNotice",
			PROFILE_UPDATED: "onProfileUpdated",
			BLACKLIST_UPDATED: "blacklistUpdated",
			FRIEND_LIST_UPDATED: "onFriendListUpdated",
			FRIEND_GROUP_LIST_UPDATED: "onFriendGroupListUpdated",
			FRIEND_APPLICATION_LIST_UPDATED: "onFriendApplicationListUpdated",
			KICKED_OUT: "kickedOut",
			ERROR: "error",
			NET_STATE_CHANGE: "netStateChange",
			SDK_RELOAD: "sdkReload"
		},
		Zn = {
			MSG_TEXT: "TIMTextElem",
			MSG_IMAGE: "TIMImageElem",
			MSG_SOUND: "TIMSoundElem",
			MSG_AUDIO: "TIMSoundElem",
			MSG_FILE: "TIMFileElem",
			MSG_FACE: "TIMFaceElem",
			MSG_VIDEO: "TIMVideoFileElem",
			MSG_GEO: "TIMLocationElem",
			MSG_GRP_TIP: "TIMGroupTipElem",
			MSG_GRP_SYS_NOTICE: "TIMGroupSystemNoticeElem",
			MSG_CUSTOM: "TIMCustomElem",
			MSG_MERGER: "TIMRelayElem",
			MSG_PRIORITY_HIGH: "High",
			MSG_PRIORITY_NORMAL: "Normal",
			MSG_PRIORITY_LOW: "Low",
			MSG_PRIORITY_LOWEST: "Lowest",
			CONV_C2C: "C2C",
			CONV_GROUP: "GROUP",
			CONV_SYSTEM: "@TIM#SYSTEM",
			CONV_AT_ME: 1,
			CONV_AT_ALL: 2,
			CONV_AT_ALL_AT_ME: 3,
			GRP_PRIVATE: "Private",
			GRP_WORK: "Private",
			GRP_PUBLIC: "Public",
			GRP_CHATROOM: "ChatRoom",
			GRP_MEETING: "ChatRoom",
			GRP_AVCHATROOM: "AVChatRoom",
			GRP_MBR_ROLE_OWNER: "Owner",
			GRP_MBR_ROLE_ADMIN: "Admin",
			GRP_MBR_ROLE_MEMBER: "Member",
			GRP_TIP_MBR_JOIN: 1,
			GRP_TIP_MBR_QUIT: 2,
			GRP_TIP_MBR_KICKED_OUT: 3,
			GRP_TIP_MBR_SET_ADMIN: 4,
			GRP_TIP_MBR_CANCELED_ADMIN: 5,
			GRP_TIP_GRP_PROFILE_UPDATED: 6,
			GRP_TIP_MBR_PROFILE_UPDATED: 7,
			MSG_REMIND_ACPT_AND_NOTE: "AcceptAndNotify",
			MSG_REMIND_ACPT_NOT_NOTE: "AcceptNotNotify",
			MSG_REMIND_DISCARD: "Discard",
			GENDER_UNKNOWN: "Gender_Type_Unknown",
			GENDER_FEMALE: "Gender_Type_Female",
			GENDER_MALE: "Gender_Type_Male",
			KICKED_OUT_MULT_ACCOUNT: "multipleAccount",
			KICKED_OUT_MULT_DEVICE: "multipleDevice",
			KICKED_OUT_USERSIG_EXPIRED: "userSigExpired",
			ALLOW_TYPE_ALLOW_ANY: "AllowType_Type_AllowAny",
			ALLOW_TYPE_NEED_CONFIRM: "AllowType_Type_NeedConfirm",
			ALLOW_TYPE_DENY_ANY: "AllowType_Type_DenyAny",
			FORBID_TYPE_NONE: "AdminForbid_Type_None",
			FORBID_TYPE_SEND_OUT: "AdminForbid_Type_SendOut",
			JOIN_OPTIONS_FREE_ACCESS: "FreeAccess",
			JOIN_OPTIONS_NEED_PERMISSION: "NeedPermission",
			JOIN_OPTIONS_DISABLE_APPLY: "DisableApply",
			JOIN_STATUS_SUCCESS: "JoinedSuccess",
			JOIN_STATUS_ALREADY_IN_GROUP: "AlreadyInGroup",
			JOIN_STATUS_WAIT_APPROVAL: "WaitAdminApproval",
			GRP_PROFILE_OWNER_ID: "ownerID",
			GRP_PROFILE_CREATE_TIME: "createTime",
			GRP_PROFILE_LAST_INFO_TIME: "lastInfoTime",
			GRP_PROFILE_MEMBER_NUM: "memberNum",
			GRP_PROFILE_MAX_MEMBER_NUM: "maxMemberNum",
			GRP_PROFILE_JOIN_OPTION: "joinOption",
			GRP_PROFILE_INTRODUCTION: "introduction",
			GRP_PROFILE_NOTIFICATION: "notification",
			GRP_PROFILE_MUTE_ALL_MBRS: "muteAllMembers",
			SNS_ADD_TYPE_SINGLE: "Add_Type_Single",
			SNS_ADD_TYPE_BOTH: "Add_Type_Both",
			SNS_DELETE_TYPE_SINGLE: "Delete_Type_Single",
			SNS_DELETE_TYPE_BOTH: "Delete_Type_Both",
			SNS_APPLICATION_TYPE_BOTH: "Pendency_Type_Both",
			SNS_APPLICATION_SENT_TO_ME: "Pendency_Type_ComeIn",
			SNS_APPLICATION_SENT_BY_ME: "Pendency_Type_SendOut",
			SNS_APPLICATION_AGREE: "Response_Action_Agree",
			SNS_APPLICATION_AGREE_AND_ADD: "Response_Action_AgreeAndAdd",
			SNS_CHECK_TYPE_BOTH: "CheckResult_Type_Both",
			SNS_CHECK_TYPE_SINGLE: "CheckResult_Type_Single",
			SNS_TYPE_NO_RELATION: "CheckResult_Type_NoRelation",
			SNS_TYPE_A_WITH_B: "CheckResult_Type_AWithB",
			SNS_TYPE_B_WITH_A: "CheckResult_Type_BWithA",
			SNS_TYPE_BOTH_WAY: "CheckResult_Type_BothWay",
			NET_STATE_CONNECTED: "connected",
			NET_STATE_CONNECTING: "connecting",
			NET_STATE_DISCONNECTED: "disconnected",
			MSG_AT_ALL: "__kImSDK_MesssageAtALL__"
		},
		eo = [].slice,
		to = {},
		no = function(e, t, n) {
			if (!(t in to)) {
				for (var o = [], r = 0; r < t; r++) o[r] = "a[" + r + "]";
				to[t] = Function("C,a", "return new C(" + o.join(",") + ")")
			}
			return to[t](e, n)
		},
		oo = Function.bind || function(e) {
			var t = Et(this),
				n = eo.call(arguments, 1),
				o = function() {
					var r = n.concat(eo.call(arguments));
					return this instanceof o ? no(t, r.length, r) : t.apply(e, r)
				};
			return V(t.prototype) && (o.prototype = t.prototype), o
		};
	nt({
		target: "Function",
		proto: !0
	}, {
		bind: oo
	});
	var ro = Kt.map,
		ao = Yn("map");
	nt({
		target: "Array",
		proto: !0,
		forced: !ao
	}, {
		map: function(e) {
			return ro(this, e, arguments.length > 1 ? arguments[1] : void 0)
		}
	});
	var so = function() {
			function e() {
				o(this, e), this.cache = [], this.options = null
			}
			return a(e, [{
				key: "use",
				value: function(e) {
					if ("function" != typeof e) throw "middleware must be a function";
					return this.cache.push(e), this
				}
			}, {
				key: "next",
				value: function(e) {
					if (this.middlewares && this.middlewares.length > 0) return this.middlewares
						.shift().call(this, this.options, this.next.bind(this))
				}
			}, {
				key: "run",
				value: function(e) {
					return this.middlewares = this.cache.map((function(e) {
						return e
					})), this.options = e, this.next()
				}
			}]), e
		}(),
		io = ee.f,
		co = Function.prototype,
		uo = co.toString,
		lo = /^\s*function ([^ (]*)/;
	O && !("name" in co) && io(co, "name", {
		configurable: !0,
		get: function() {
			try {
				return uo.call(this).match(lo)[1]
			} catch (Hv) {
				return ""
			}
		}
	});
	var po = k((function(e, t) {
		var n, o, r, a, s, i, c, u, l, d, p, g, h, f, _, m, v, M;
		e.exports = (n = "function" == typeof Promise, o = "object" == typeof self ? self : D, r =
			"undefined" != typeof Symbol, a = "undefined" != typeof Map, s = "undefined" !=
			typeof Set, i = "undefined" != typeof WeakMap, c = "undefined" != typeof WeakSet,
			u = "undefined" != typeof DataView, l = r && void 0 !== Symbol.iterator, d = r &&
			void 0 !== Symbol.toStringTag, p = s && "function" == typeof Set.prototype.entries,
			g = a && "function" == typeof Map.prototype.entries, h = p && Object.getPrototypeOf(
				(new Set).entries()), f = g && Object.getPrototypeOf((new Map).entries()), _ =
			l && "function" == typeof Array.prototype[Symbol.iterator], m = _ && Object
			.getPrototypeOf([][Symbol.iterator]()), v = l && "function" == typeof String
			.prototype[Symbol.iterator], M = v && Object.getPrototypeOf("" [Symbol.iterator]()),
			function(e) {
				var t = typeof e;
				if ("object" !== t) return t;
				if (null === e) return "null";
				if (e === o) return "global";
				if (Array.isArray(e) && (!1 === d || !(Symbol.toStringTag in e)))
			return "Array";
				if ("object" == typeof window && null !== window) {
					if ("object" == typeof window.location && e === window.location)
					return "Location";
					if ("object" == typeof window.document && e === window.document)
					return "Document";
					if ("object" == typeof window.navigator) {
						if ("object" == typeof window.navigator.mimeTypes && e === window
							.navigator.mimeTypes) return "MimeTypeArray";
						if ("object" == typeof window.navigator.plugins && e === window
							.navigator.plugins) return "PluginArray"
					}
					if (("function" == typeof window.HTMLElement || "object" == typeof window
							.HTMLElement) && e instanceof window.HTMLElement) {
						if ("BLOCKQUOTE" === e.tagName) return "HTMLQuoteElement";
						if ("TD" === e.tagName) return "HTMLTableDataCellElement";
						if ("TH" === e.tagName) return "HTMLTableHeaderCellElement"
					}
				}
				var r = d && e[Symbol.toStringTag];
				if ("string" == typeof r) return r;
				var l = Object.getPrototypeOf(e);
				return l === RegExp.prototype ? "RegExp" : l === Date.prototype ? "Date" : n &&
					l === Promise.prototype ? "Promise" : s && l === Set.prototype ? "Set" :
					a && l === Map.prototype ? "Map" : c && l === WeakSet.prototype ?
					"WeakSet" : i && l === WeakMap.prototype ? "WeakMap" : u && l === DataView
					.prototype ? "DataView" : a && l === f ? "Map Iterator" : s && l === h ?
					"Set Iterator" : _ && l === m ? "Array Iterator" : v && l === M ?
					"String Iterator" : null === l ? "Object" : Object.prototype.toString.call(
						e).slice(8, -1)
			})
	}));
	nt({
		target: "Array",
		stat: !0
	}, {
		isArray: kt
	});
	var go = function(e, t, n) {
			var o, r;
			return Un && "function" == typeof(o = t.constructor) && o !== n && V(r = o.prototype) && r !== n
				.prototype && Un(e, r), e
		},
		ho = Be.f,
		fo = X.f,
		_o = ee.f,
		mo = ct.trim,
		vo = N.Number,
		Mo = vo.prototype,
		yo = "Number" == G(It(Mo)),
		Io = function(e) {
			var t, n, o, r, a, s, i, c, u = K(e, !1);
			if ("string" == typeof u && u.length > 2)
				if (43 === (t = (u = mo(u)).charCodeAt(0)) || 45 === t) {
					if (88 === (n = u.charCodeAt(2)) || 120 === n) return NaN
				} else if (48 === t) {
				switch (u.charCodeAt(1)) {
					case 66:
					case 98:
						o = 2, r = 49;
						break;
					case 79:
					case 111:
						o = 8, r = 55;
						break;
					default:
						return +u
				}
				for (s = (a = u.slice(2)).length, i = 0; i < s; i++)
					if ((c = a.charCodeAt(i)) < 48 || c > r) return NaN;
				return parseInt(a, o)
			}
			return +u
		};
	if (Ze("Number", !vo(" 0o1") || !vo("0b1") || vo("+0x1"))) {
		for (var So, To = function(e) {
					var t = arguments.length < 1 ? 0 : e,
						n = this;
					return n instanceof To && (yo ? A((function() {
						Mo.valueOf.call(n)
					})) : "Number" != G(n)) ? go(new vo(Io(t)), n, To) : Io(t)
				}, Eo = O ? ho(vo) :
				"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,fromString,range"
				.split(","), Do = 0; Eo.length > Do; Do++) H(vo, So = Eo[Do]) && !H(To, So) && _o(To, So, fo(vo,
			So));
		To.prototype = Mo, Mo.constructor = To, De(N, "Number", To)
	}
	var ko = A((function() {
		Cn(1)
	}));
	nt({
		target: "Object",
		stat: !0,
		forced: ko,
		sham: !En
	}, {
		getPrototypeOf: function(e) {
			return Cn(B(e))
		}
	});
	var Co = Date.prototype,
		No = Co.toString,
		Ao = Co.getTime;
	new Date(NaN) + "" != "Invalid Date" && De(Co, "toString", (function() {
		var e = Ao.call(this);
		return e == e ? No.call(this) : "Invalid Date"
	}));
	var Oo = an ? {}.toString : function() {
		return "[object " + un(this) + "]"
	};
	an || De(Object.prototype, "toString", Oo, {
		unsafe: !0
	});
	var Lo = function() {
			var e = Q(this),
				t = "";
			return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.dotAll && (
				t += "s"), e.unicode && (t += "u"), e.sticky && (t += "y"), t
		},
		Ro = RegExp.prototype,
		wo = Ro.toString,
		bo = A((function() {
			return "/a/b" != wo.call({
				source: "a",
				flags: "b"
			})
		})),
		Po = "toString" != wo.name;
	(bo || Po) && De(RegExp.prototype, "toString", (function() {
		var e = Q(this),
			t = String(e.source),
			n = e.flags;
		return "/" + t + "/" + String(void 0 === n && e instanceof RegExp && !("flags" in Ro) ? Lo
			.call(e) : n)
	}), {
		unsafe: !0
	});
	var Go, Uo, Fo = function(e, t) {
			return RegExp(e, t)
		},
		qo = {
			UNSUPPORTED_Y: A((function() {
				var e = Fo("a", "y");
				return e.lastIndex = 2, null != e.exec("abcd")
			})),
			BROKEN_CARET: A((function() {
				var e = Fo("^r", "gy");
				return e.lastIndex = 2, null != e.exec("str")
			}))
		},
		xo = A((function() {
			var e = RegExp(".", "string".charAt(0));
			return !(e.dotAll && e.exec("\n") && "s" === e.flags)
		})),
		Vo = A((function() {
			var e = RegExp("(?<a>b)", "string".charAt(5));
			return "b" !== e.exec("b").groups.a || "bc" !== "b".replace(e, "$<a>c")
		})),
		Ko = Ee.get,
		Bo = RegExp.prototype.exec,
		jo = de("native-string-replace", String.prototype.replace),
		Ho = Bo,
		$o = (Go = /a/, Uo = /b*/g, Bo.call(Go, "a"), Bo.call(Uo, "a"), 0 !== Go.lastIndex || 0 !== Uo
			.lastIndex),
		Yo = qo.UNSUPPORTED_Y || qo.BROKEN_CARET,
		zo = void 0 !== /()??/.exec("")[1];
	($o || zo || Yo || xo || Vo) && (Ho = function(e) {
		var t, n, o, r, a, s, i, c = this,
			u = Ko(c),
			l = u.raw;
		if (l) return l.lastIndex = c.lastIndex, t = Ho.call(l, e), c.lastIndex = l.lastIndex, t;
		var d = u.groups,
			p = Yo && c.sticky,
			g = Lo.call(c),
			h = c.source,
			f = 0,
			_ = e;
		if (p && (-1 === (g = g.replace("y", "")).indexOf("g") && (g += "g"), _ = String(e).slice(c
				.lastIndex), c.lastIndex > 0 && (!c.multiline || c.multiline && "\n" !== e[c.lastIndex -
				1]) && (h = "(?: " + h + ")", _ = " " + _, f++), n = new RegExp("^(?:" + h + ")", g)), zo &&
			(n = new RegExp("^" + h + "$(?!\\s)", g)), $o && (o = c.lastIndex), r = Bo.call(p ? n : c, _),
			p ? r ? (r.input = r.input.slice(f), r[0] = r[0].slice(f), r.index = c.lastIndex, c.lastIndex +=
				r[0].length) : c.lastIndex = 0 : $o && r && (c.lastIndex = c.global ? r.index + r[0]
				.length : o), zo && r && r.length > 1 && jo.call(r[0], n, (function() {
				for (a = 1; a < arguments.length - 2; a++) void 0 === arguments[a] && (r[a] =
					void 0)
			})), r && d)
			for (r.groups = s = It(null), a = 0; a < d.length; a++) s[(i = d[a])[0]] = r[i[1]];
		return r
	});
	var Wo = Ho;
	nt({
		target: "RegExp",
		proto: !0,
		forced: /./.exec !== Wo
	}, {
		exec: Wo
	});
	var Jo = Ut("species"),
		Xo = RegExp.prototype,
		Qo = function(e, t, n, o) {
			var r = Ut(e),
				a = !A((function() {
					var t = {};
					return t[r] = function() {
						return 7
					}, 7 != "" [e](t)
				})),
				s = a && !A((function() {
					var t = !1,
						n = /a/;
					return "split" === e && ((n = {}).constructor = {}, n.constructor[Jo] = function() {
						return n
					}, n.flags = "", n[r] = /./ [r]), n.exec = function() {
						return t = !0, null
					}, n[r](""), !t
				}));
			if (!a || !s || n) {
				var i = /./ [r],
					c = t(r, "" [e], (function(e, t, n, o, r) {
						var s = t.exec;
						return s === Wo || s === Xo.exec ? a && !r ? {
							done: !0,
							value: i.call(t, n, o)
						} : {
							done: !0,
							value: e.call(n, t, o)
						} : {
							done: !1
						}
					}));
				De(String.prototype, e, c[0]), De(Xo, r, c[1])
			}
			o && te(Xo[r], "sham", !0)
		},
		Zo = Tn.charAt,
		er = function(e, t, n) {
			return t + (n ? Zo(e, t).length : 1)
		},
		tr = function(e, t) {
			var n = e.exec;
			if ("function" == typeof n) {
				var o = n.call(e, t);
				if ("object" != typeof o) throw TypeError(
					"RegExp exec method returned something other than an Object or null");
				return o
			}
			if ("RegExp" !== G(e)) throw TypeError("RegExp#exec called on incompatible receiver");
			return Wo.call(e, t)
		};
	Qo("match", (function(e, t, n) {
		return [function(t) {
			var n = q(this),
				o = null == t ? void 0 : t[e];
			return void 0 !== o ? o.call(t, n) : new RegExp(t)[e](String(n))
		}, function(e) {
			var o = n(t, this, e);
			if (o.done) return o.value;
			var r = Q(this),
				a = String(e);
			if (!r.global) return tr(r, a);
			var s = r.unicode;
			r.lastIndex = 0;
			for (var i, c = [], u = 0; null !== (i = tr(r, a));) {
				var l = String(i[0]);
				c[u] = l, "" === l && (r.lastIndex = er(a, we(r.lastIndex), s)), u++
			}
			return 0 === u ? null : c
		}]
	})), nt({
		target: "Date",
		stat: !0
	}, {
		now: function() {
			return (new Date).getTime()
		}
	});
	var nr = Ut("unscopables"),
		or = Array.prototype;
	null == or[nr] && ee.f(or, nr, {
		configurable: !0,
		value: It(null)
	});
	var rr = function(e) {
			or[nr][e] = !0
		},
		ar = Fe.includes;
	nt({
		target: "Array",
		proto: !0
	}, {
		includes: function(e) {
			return ar(this, e, arguments.length > 1 ? arguments[1] : void 0)
		}
	}), rr("includes");
	var sr = Ut("match"),
		ir = function(e) {
			var t;
			return V(e) && (void 0 !== (t = e[sr]) ? !!t : "RegExp" == G(e))
		},
		cr = function(e) {
			if (ir(e)) throw TypeError("The method doesn't accept regular expressions");
			return e
		},
		ur = Ut("match"),
		lr = function(e) {
			var t = /./;
			try {
				"/./" [e](t)
			} catch (n) {
				try {
					return t[ur] = !1, "/./" [e](t)
				} catch (o) {}
			}
			return !1
		};
	nt({
		target: "String",
		proto: !0,
		forced: !lr("includes")
	}, {
		includes: function(e) {
			return !!~String(q(this)).indexOf(cr(e), arguments.length > 1 ? arguments[1] : void 0)
		}
	});
	var dr = function(e) {
			var t = String(q(this)),
				n = "",
				o = Le(e);
			if (o < 0 || Infinity == o) throw RangeError("Wrong number of repetitions");
			for (; o > 0;
				(o >>>= 1) && (t += t)) 1 & o && (n += t);
			return n
		},
		pr = Math.ceil,
		gr = function(e) {
			return function(t, n, o) {
				var r, a, s = String(q(t)),
					i = s.length,
					c = void 0 === o ? " " : String(o),
					u = we(n);
				return u <= i || "" == c ? s : ((a = dr.call(c, pr((r = u - i) / c.length))).length > r && (
					a = a.slice(0, r)), e ? s + a : a + s)
			}
		},
		hr = {
			start: gr(!1),
			end: gr(!0)
		}.start,
		fr = Math.abs,
		_r = Date.prototype,
		mr = _r.getTime,
		vr = _r.toISOString,
		Mr = A((function() {
			return "0385-07-25T07:06:39.999Z" != vr.call(new Date(-50000000000001))
		})) || !A((function() {
			vr.call(new Date(NaN))
		})) ? function() {
			if (!isFinite(mr.call(this))) throw RangeError("Invalid time value");
			var e = this.getUTCFullYear(),
				t = this.getUTCMilliseconds(),
				n = e < 0 ? "-" : e > 9999 ? "+" : "";
			return n + hr(fr(e), n ? 6 : 4, 0) + "-" + hr(this.getUTCMonth() + 1, 2, 0) + "-" + hr(this
				.getUTCDate(), 2, 0) + "T" + hr(this.getUTCHours(), 2, 0) + ":" + hr(this.getUTCMinutes(),
				2, 0) + ":" + hr(this.getUTCSeconds(), 2, 0) + "." + hr(t, 3, 0) + "Z"
		} : vr;
	nt({
		target: "Date",
		proto: !0,
		forced: Date.prototype.toISOString !== Mr
	}, {
		toISOString: Mr
	});
	var yr = Math.floor,
		Ir = "".replace,
		Sr = /\$([$&'`]|\d{1,2}|<[^>]*>)/g,
		Tr = /\$([$&'`]|\d{1,2})/g,
		Er = function(e, t, n, o, r, a) {
			var s = n + e.length,
				i = o.length,
				c = Tr;
			return void 0 !== r && (r = B(r), c = Sr), Ir.call(a, c, (function(a, c) {
				var u;
				switch (c.charAt(0)) {
					case "$":
						return "$";
					case "&":
						return e;
					case "`":
						return t.slice(0, n);
					case "'":
						return t.slice(s);
					case "<":
						u = r[c.slice(1, -1)];
						break;
					default:
						var l = +c;
						if (0 === l) return a;
						if (l > i) {
							var d = yr(l / 10);
							return 0 === d ? a : d <= i ? void 0 === o[d - 1] ? c.charAt(1) : o[d -
								1] + c.charAt(1) : a
						}
						u = o[l - 1]
				}
				return void 0 === u ? "" : u
			}))
		},
		Dr = Ut("replace"),
		kr = Math.max,
		Cr = Math.min,
		Nr = "$0" === "a".replace(/./, "$0"),
		Ar = !!/./ [Dr] && "" === /./ [Dr]("a", "$0");
	Qo("replace", (function(e, t, n) {
		var o = Ar ? "$" : "$0";
		return [function(e, n) {
			var o = q(this),
				r = null == e ? void 0 : e[Dr];
			return void 0 !== r ? r.call(e, o, n) : t.call(String(o), e, n)
		}, function(e, r) {
			if ("string" == typeof r && -1 === r.indexOf(o) && -1 === r.indexOf("$<")) {
				var a = n(t, this, e, r);
				if (a.done) return a.value
			}
			var s = Q(this),
				i = String(e),
				c = "function" == typeof r;
			c || (r = String(r));
			var u = s.global;
			if (u) {
				var l = s.unicode;
				s.lastIndex = 0
			}
			for (var d = [];;) {
				var p = tr(s, i);
				if (null === p) break;
				if (d.push(p), !u) break;
				"" === String(p[0]) && (s.lastIndex = er(i, we(s.lastIndex), l))
			}
			for (var g, h = "", f = 0, _ = 0; _ < d.length; _++) {
				p = d[_];
				for (var m = String(p[0]), v = kr(Cr(Le(p.index), i.length), 0), M = [], y =
						1; y < p.length; y++) M.push(void 0 === (g = p[y]) ? g : String(g));
				var I = p.groups;
				if (c) {
					var S = [m].concat(M, v, i);
					void 0 !== I && S.push(I);
					var T = String(r.apply(void 0, S))
				} else T = Er(m, i, v, M, I, r);
				v >= f && (h += i.slice(f, v) + T, f = v + m.length)
			}
			return h + i.slice(f)
		}]
	}), !!A((function() {
		var e = /./;
		return e.exec = function() {
			var e = [];
			return e.groups = {
				a: "7"
			}, e
		}, "7" !== "".replace(e, "$<a>")
	})) || !Nr || Ar);
	var Or = Ee.set,
		Lr = Ee.getterFor("Array Iterator"),
		Rr = Kn(Array, "Array", (function(e, t) {
			Or(this, {
				type: "Array Iterator",
				target: x(e),
				index: 0,
				kind: t
			})
		}), (function() {
			var e = Lr(this),
				t = e.target,
				n = e.kind,
				o = e.index++;
			return !t || o >= t.length ? (e.target = void 0, {
				value: void 0,
				done: !0
			}) : "keys" == n ? {
				value: o,
				done: !1
			} : "values" == n ? {
				value: t[o],
				done: !1
			} : {
				value: [o, t[o]],
				done: !1
			}
		}), "values");
	Zt.Arguments = Zt.Array, rr("keys"), rr("values"), rr("entries");
	var wr = Ut("iterator"),
		br = Ut("toStringTag"),
		Pr = Rr.values;
	for (var Gr in $t) {
		var Ur = N[Gr],
			Fr = Ur && Ur.prototype;
		if (Fr) {
			if (Fr[wr] !== Pr) try {
				te(Fr, wr, Pr)
			} catch (Hv) {
				Fr[wr] = Pr
			}
			if (Fr[br] || te(Fr, br, Gr), $t[Gr])
				for (var qr in Rr)
					if (Fr[qr] !== Rr[qr]) try {
						te(Fr, qr, Rr[qr])
					} catch (Hv) {
						Fr[qr] = Rr[qr]
					}
		}
	}
	var xr = Yn("slice"),
		Vr = Ut("species"),
		Kr = [].slice,
		Br = Math.max;
	nt({
		target: "Array",
		proto: !0,
		forced: !xr
	}, {
		slice: function(e, t) {
			var n, o, r, a = x(this),
				s = we(a.length),
				i = Ge(e, s),
				c = Ge(void 0 === t ? s : t, s);
			if (kt(a) && ("function" != typeof(n = a.constructor) || n !== Array && !kt(n
					.prototype) ? V(n) && null === (n = n[Vr]) && (n = void 0) : n = void 0, n ===
					Array || void 0 === n)) return Kr.call(a, i, c);
			for (o = new(void 0 === n ? Array : n)(Br(c - i, 0)), r = 0; i < c; i++, r++) i in a &&
				on(o, r, a[i]);
			return o.length = r, o
		}
	});
	var jr = [].join,
		Hr = F != Object,
		$r = Bt("join", ",");
	nt({
		target: "Array",
		proto: !0,
		forced: Hr || !$r
	}, {
		join: function(e) {
			return jr.call(x(this), void 0 === e ? "," : e)
		}
	});
	var Yr = Fe.indexOf,
		zr = [].indexOf,
		Wr = !!zr && 1 / [1].indexOf(1, -0) < 0,
		Jr = Bt("indexOf");
	nt({
		target: "Array",
		proto: !0,
		forced: Wr || !Jr
	}, {
		indexOf: function(e) {
			return Wr ? zr.apply(this, arguments) || 0 : Yr(this, e, arguments.length > 1 ?
				arguments[1] : void 0)
		}
	});
	var Xr = Be.f,
		Qr = {}.toString,
		Zr = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(
			window) : [],
		ea = {
			f: function(e) {
				return Zr && "[object Window]" == Qr.call(e) ? function(e) {
					try {
						return Xr(e)
					} catch (Hv) {
						return Zr.slice()
					}
				}(e) : Xr(x(e))
			}
		},
		ta = ea.f,
		na = A((function() {
			return !Object.getOwnPropertyNames(1)
		}));
	nt({
		target: "Object",
		stat: !0,
		forced: na
	}, {
		getOwnPropertyNames: ta
	});
	var oa = Kt.find,
		ra = !0;
	"find" in [] && Array(1).find((function() {
		ra = !1
	})), nt({
		target: "Array",
		proto: !0,
		forced: ra
	}, {
		find: function(e) {
			return oa(this, e, arguments.length > 1 ? arguments[1] : void 0)
		}
	}), rr("find");
	var aa, sa, ia, ca = N.Promise,
		ua = function(e, t, n) {
			for (var o in t) De(e, o, t[o], n);
			return e
		},
		la = Ut("species"),
		da = function(e) {
			var t = Ne(e),
				n = ee.f;
			O && t && !t[la] && n(t, la, {
				configurable: !0,
				get: function() {
					return this
				}
			})
		},
		pa = function(e, t, n) {
			if (!(e instanceof t)) throw TypeError("Incorrect " + (n ? n + " " : "") + "invocation");
			return e
		},
		ga = function(e, t) {
			this.stopped = e, this.result = t
		},
		ha = function(e, t, n) {
			var o, r, a, s, i, c, u, l = n && n.that,
				d = !(!n || !n.AS_ENTRIES),
				p = !(!n || !n.IS_ITERATOR),
				g = !(!n || !n.INTERRUPTED),
				h = Dt(t, l, 1 + d + g),
				f = function(e) {
					return o && Xt(o), new ga(!0, e)
				},
				_ = function(e) {
					return d ? (Q(e), g ? h(e[0], e[1], f) : h(e[0], e[1])) : g ? h(e, f) : h(e)
				};
			if (p) o = e;
			else {
				if ("function" != typeof(r = dn(e))) throw TypeError("Target is not iterable");
				if (nn(r)) {
					for (a = 0, s = we(e.length); s > a; a++)
						if ((i = _(e[a])) && i instanceof ga) return i;
					return new ga(!1)
				}
				o = r.call(e)
			}
			for (c = o.next; !(u = c.call(o)).done;) {
				try {
					i = _(u.value)
				} catch (Hv) {
					throw Xt(o), Hv
				}
				if ("object" == typeof i && i && i instanceof ga) return i
			}
			return new ga(!1)
		},
		fa = Ut("species"),
		_a = function(e, t) {
			var n, o = Q(e).constructor;
			return void 0 === o || null == (n = Q(o)[fa]) ? t : Et(n)
		},
		ma = /(?:iphone|ipod|ipad).*applewebkit/i.test(Ct),
		va = "process" == G(N.process),
		Ma = N.location,
		ya = N.setImmediate,
		Ia = N.clearImmediate,
		Sa = N.process,
		Ta = N.MessageChannel,
		Ea = N.Dispatch,
		Da = 0,
		ka = {},
		Ca = function(e) {
			if (ka.hasOwnProperty(e)) {
				var t = ka[e];
				delete ka[e], t()
			}
		},
		Na = function(e) {
			return function() {
				Ca(e)
			}
		},
		Aa = function(e) {
			Ca(e.data)
		},
		Oa = function(e) {
			N.postMessage(e + "", Ma.protocol + "//" + Ma.host)
		};
	ya && Ia || (ya = function(e) {
			for (var t = [], n = 1; arguments.length > n;) t.push(arguments[n++]);
			return ka[++Da] = function() {
				("function" == typeof e ? e : Function(e)).apply(void 0, t)
			}, aa(Da), Da
		}, Ia = function(e) {
			delete ka[e]
		}, va ? aa = function(e) {
			Sa.nextTick(Na(e))
		} : Ea && Ea.now ? aa = function(e) {
			Ea.now(Na(e))
		} : Ta && !ma ? (ia = (sa = new Ta).port2, sa.port1.onmessage = Aa, aa = Dt(ia.postMessage, ia,
		1)) : N.addEventListener && "function" == typeof postMessage && !N.importScripts && Ma &&
		"file:" !== Ma.protocol && !A(Oa) ? (aa = Oa, N.addEventListener("message", Aa, !1)) : aa =
		"onreadystatechange" in z("script") ? function(e) {
			_t.appendChild(z("script")).onreadystatechange = function() {
				_t.removeChild(this), Ca(e)
			}
		} : function(e) {
			setTimeout(Na(e), 0)
		});
	var La, Ra, wa, ba, Pa, Ga, Ua, Fa, qa = {
			set: ya,
			clear: Ia
		},
		xa = /web0s(?!.*chrome)/i.test(Ct),
		Va = X.f,
		Ka = qa.set,
		Ba = N.MutationObserver || N.WebKitMutationObserver,
		ja = N.document,
		Ha = N.process,
		$a = N.Promise,
		Ya = Va(N, "queueMicrotask"),
		za = Ya && Ya.value;
	za || (La = function() {
		var e, t;
		for (va && (e = Ha.domain) && e.exit(); Ra;) {
			t = Ra.fn, Ra = Ra.next;
			try {
				t()
			} catch (Hv) {
				throw Ra ? ba() : wa = void 0, Hv
			}
		}
		wa = void 0, e && e.enter()
	}, ma || va || xa || !Ba || !ja ? $a && $a.resolve ? ((Ua = $a.resolve(void 0)).constructor = $a,
		Fa = Ua.then, ba = function() {
			Fa.call(Ua, La)
		}) : ba = va ? function() {
		Ha.nextTick(La)
	} : function() {
		Ka.call(N, La)
	} : (Pa = !0, Ga = ja.createTextNode(""), new Ba(La).observe(Ga, {
		characterData: !0
	}), ba = function() {
		Ga.data = Pa = !Pa
	}));
	var Wa, Ja, Xa, Qa, Za = za || function(e) {
			var t = {
				fn: e,
				next: void 0
			};
			wa && (wa.next = t), Ra || (Ra = t, ba()), wa = t
		},
		es = function(e) {
			var t, n;
			this.promise = new e((function(e, o) {
				if (void 0 !== t || void 0 !== n) throw TypeError("Bad Promise constructor");
				t = e, n = o
			})), this.resolve = Et(t), this.reject = Et(n)
		},
		ts = {
			f: function(e) {
				return new es(e)
			}
		},
		ns = function(e, t) {
			if (Q(e), V(t) && t.constructor === e) return t;
			var n = ts.f(e);
			return (0, n.resolve)(t), n.promise
		},
		os = function(e) {
			try {
				return {
					error: !1,
					value: e()
				}
			} catch (Hv) {
				return {
					error: !0,
					value: Hv
				}
			}
		},
		rs = "object" == typeof window,
		as = qa.set,
		ss = Ut("species"),
		is = "Promise",
		cs = Ee.get,
		us = Ee.set,
		ls = Ee.getterFor(is),
		ds = ca && ca.prototype,
		ps = ca,
		gs = ds,
		hs = N.TypeError,
		fs = N.document,
		_s = N.process,
		ms = ts.f,
		vs = ms,
		Ms = !!(fs && fs.createEvent && N.dispatchEvent),
		ys = "function" == typeof PromiseRejectionEvent,
		Is = !1,
		Ss = Ze(is, (function() {
			var e = ce(ps),
				t = e !== String(ps);
			if (!t && 66 === Lt) return !0;
			if (Lt >= 51 && /native code/.test(e)) return !1;
			var n = new ps((function(e) {
					e(1)
				})),
				o = function(e) {
					e((function() {}), (function() {}))
				};
			return (n.constructor = {})[ss] = o, !(Is = n.then((function() {})) instanceof o) || !t &&
				rs && !ys
		})),
		Ts = Ss || !mn((function(e) {
			ps.all(e).catch((function() {}))
		})),
		Es = function(e) {
			var t;
			return !(!V(e) || "function" != typeof(t = e.then)) && t
		},
		Ds = function(e, t) {
			if (!e.notified) {
				e.notified = !0;
				var n = e.reactions;
				Za((function() {
					for (var o = e.value, r = 1 == e.state, a = 0; n.length > a;) {
						var s, i, c, u = n[a++],
							l = r ? u.ok : u.fail,
							d = u.resolve,
							p = u.reject,
							g = u.domain;
						try {
							l ? (r || (2 === e.rejection && As(e), e.rejection = 1), !0 === l ? s =
								o : (g && g.enter(), s = l(o), g && (g.exit(), c = !0)), s === u
								.promise ? p(hs("Promise-chain cycle")) : (i = Es(s)) ? i.call(
									s, d, p) : d(s)) : p(o)
						} catch (Hv) {
							g && !c && g.exit(), p(Hv)
						}
					}
					e.reactions = [], e.notified = !1, t && !e.rejection && Cs(e)
				}))
			}
		},
		ks = function(e, t, n) {
			var o, r;
			Ms ? ((o = fs.createEvent("Event")).promise = t, o.reason = n, o.initEvent(e, !1, !0), N
				.dispatchEvent(o)) : o = {
				promise: t,
				reason: n
			}, !ys && (r = N["on" + e]) ? r(o) : "unhandledrejection" === e && function(e, t) {
				var n = N.console;
				n && n.error && (1 === arguments.length ? n.error(e) : n.error(e, t))
			}("Unhandled promise rejection", n)
		},
		Cs = function(e) {
			as.call(N, (function() {
				var t, n = e.facade,
					o = e.value;
				if (Ns(e) && (t = os((function() {
						va ? _s.emit("unhandledRejection", o, n) : ks(
							"unhandledrejection", n, o)
					})), e.rejection = va || Ns(e) ? 2 : 1, t.error)) throw t.value
			}))
		},
		Ns = function(e) {
			return 1 !== e.rejection && !e.parent
		},
		As = function(e) {
			as.call(N, (function() {
				var t = e.facade;
				va ? _s.emit("rejectionHandled", t) : ks("rejectionhandled", t, e.value)
			}))
		},
		Os = function(e, t, n) {
			return function(o) {
				e(t, o, n)
			}
		},
		Ls = function(e, t, n) {
			e.done || (e.done = !0, n && (e = n), e.value = t, e.state = 2, Ds(e, !0))
		},
		Rs = function(e, t, n) {
			if (!e.done) {
				e.done = !0, n && (e = n);
				try {
					if (e.facade === t) throw hs("Promise can't be resolved itself");
					var o = Es(t);
					o ? Za((function() {
						var n = {
							done: !1
						};
						try {
							o.call(t, Os(Rs, n, e), Os(Ls, n, e))
						} catch (Hv) {
							Ls(n, Hv, e)
						}
					})) : (e.value = t, e.state = 1, Ds(e, !1))
				} catch (Hv) {
					Ls({
						done: !1
					}, Hv, e)
				}
			}
		};
	if (Ss && (gs = (ps = function(e) {
			pa(this, ps, is), Et(e), Wa.call(this);
			var t = cs(this);
			try {
				e(Os(Rs, t), Os(Ls, t))
			} catch (Hv) {
				Ls(t, Hv)
			}
		}).prototype, (Wa = function(e) {
			us(this, {
				type: is,
				done: !1,
				notified: !1,
				parent: !1,
				reactions: [],
				rejection: !1,
				state: 0,
				value: void 0
			})
		}).prototype = ua(gs, {
			then: function(e, t) {
				var n = ls(this),
					o = ms(_a(this, ps));
				return o.ok = "function" != typeof e || e, o.fail = "function" == typeof t && t, o
					.domain = va ? _s.domain : void 0, n.parent = !0, n.reactions.push(o), 0 != n
					.state && Ds(n, !1), o.promise
			},
			catch: function(e) {
				return this.then(void 0, e)
			}
		}), Ja = function() {
			var e = new Wa,
				t = cs(e);
			this.promise = e, this.resolve = Os(Rs, t), this.reject = Os(Ls, t)
		}, ts.f = ms = function(e) {
			return e === ps || e === Xa ? new Ja(e) : vs(e)
		}, "function" == typeof ca && ds !== Object.prototype)) {
		Qa = ds.then, Is || (De(ds, "then", (function(e, t) {
			var n = this;
			return new ps((function(e, t) {
				Qa.call(n, e, t)
			})).then(e, t)
		}), {
			unsafe: !0
		}), De(ds, "catch", gs.catch, {
			unsafe: !0
		}));
		try {
			delete ds.constructor
		} catch (Hv) {}
		Un && Un(ds, gs)
	}
	nt({
		global: !0,
		wrap: !0,
		forced: Ss
	}, {
		Promise: ps
	}), wn(ps, is, !1), da(is), Xa = Ne(is), nt({
		target: is,
		stat: !0,
		forced: Ss
	}, {
		reject: function(e) {
			var t = ms(this);
			return t.reject.call(void 0, e), t.promise
		}
	}), nt({
		target: is,
		stat: !0,
		forced: Ss
	}, {
		resolve: function(e) {
			return ns(this, e)
		}
	}), nt({
		target: is,
		stat: !0,
		forced: Ts
	}, {
		all: function(e) {
			var t = this,
				n = ms(t),
				o = n.resolve,
				r = n.reject,
				a = os((function() {
					var n = Et(t.resolve),
						a = [],
						s = 0,
						i = 1;
					ha(e, (function(e) {
						var c = s++,
							u = !1;
						a.push(void 0), i++, n.call(t, e).then((function(e) {
							u || (u = !0, a[c] = e, --i || o(a))
						}), r)
					})), --i || o(a)
				}));
			return a.error && r(a.value), n.promise
		},
		race: function(e) {
			var t = this,
				n = ms(t),
				o = n.reject,
				r = os((function() {
					var r = Et(t.resolve);
					ha(e, (function(e) {
						r.call(t, e).then(n.resolve, o)
					}))
				}));
			return r.error && o(r.value), n.promise
		}
	});
	var ws = Tn.codeAt;
	nt({
		target: "String",
		proto: !0
	}, {
		codePointAt: function(e) {
			return ws(this, e)
		}
	});
	var bs = ct.trim,
		Ps = N.parseFloat,
		Gs = 1 / Ps(ot + "-0") != -Infinity ? function(e) {
			var t = bs(String(e)),
				n = Ps(t);
			return 0 === n && "-" == t.charAt(0) ? -0 : n
		} : Ps;
	nt({
		global: !0,
		forced: parseFloat != Gs
	}, {
		parseFloat: Gs
	});
	var Us = {
			WEB: 7,
			WX_MP: 8,
			QQ_MP: 9,
			TT_MP: 10,
			BAIDU_MP: 11,
			ALI_MP: 12,
			UNI_NATIVE_APP: 14
		},
		Fs = "1.7.3",
		qs = 537048168,
		xs = 1,
		Vs = 2,
		Ks = 3,
		Bs = {
			HOST: {
				CURRENT: {
					DEFAULT: "",
					BACKUP: ""
				},
				TEST: {
					DEFAULT: "wss://wss-dev.tim.qq.com",
					BACKUP: "wss://wss-dev.tim.qq.com"
				},
				PRODUCTION: {
					DEFAULT: "wss://wss.im.qcloud.com",
					BACKUP: "wss://wss.tim.qq.com"
				},
				OVERSEA_PRODUCTION: {
					DEFAULT: "wss://wss.im.qcloud.com",
					BACKUP: "wss://wss.im.qcloud.com"
				},
				setCurrent: function() {
					var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 2;
					e === xs ? this.CURRENT = this.TEST : e === Vs ? this.CURRENT = this.PRODUCTION : e ===
						Ks && (this.CURRENT = this.OVERSEA_PRODUCTION)
				}
			},
			NAME: {
				OPEN_IM: "openim",
				GROUP: "group_open_http_svc",
				FRIEND: "sns",
				PROFILE: "profile",
				RECENT_CONTACT: "recentcontact",
				PIC: "openpic",
				BIG_GROUP_NO_AUTH: "group_open_http_noauth_svc",
				BIG_GROUP_LONG_POLLING: "group_open_long_polling_http_svc",
				BIG_GROUP_LONG_POLLING_NO_AUTH: "group_open_long_polling_http_noauth_svc",
				IM_OPEN_STAT: "imopenstat",
				WEB_IM: "webim",
				IM_COS_SIGN: "im_cos_sign_svr",
				CUSTOM_UPLOAD: "im_cos_msg",
				HEARTBEAT: "heartbeat",
				IM_OPEN_PUSH: "im_open_push",
				IM_OPEN_STATUS: "im_open_status",
				IM_LONG_MESSAGE: "im_long_msg",
				CLOUD_CONTROL: "im_sdk_config_mgr"
			},
			CMD: {
				ACCESS_LAYER: "accesslayer",
				LOGIN: "wslogin",
				LOGOUT_LONG_POLL: "longpollinglogout",
				LOGOUT: "wslogout",
				HELLO: "wshello",
				PORTRAIT_GET: "portrait_get_all",
				PORTRAIT_SET: "portrait_set",
				GET_LONG_POLL_ID: "getlongpollingid",
				LONG_POLL: "longpolling",
				AVCHATROOM_LONG_POLL: "get_msg",
				ADD_FRIEND: "friend_add",
				UPDATE_FRIEND: "friend_update",
				GET_FRIEND_LIST: "friend_get",
				GET_FRIEND_PROFILE: "friend_get_list",
				DELETE_FRIEND: "friend_delete",
				CHECK_FRIEND: "friend_check",
				GET_FRIEND_GROUP_LIST: "group_get",
				RESPOND_FRIEND_APPLICATION: "friend_response",
				GET_FRIEND_APPLICATION_LIST: "pendency_get",
				DELETE_FRIEND_APPLICATION: "pendency_delete",
				REPORT_FRIEND_APPLICATION: "pendency_report",
				GET_GROUP_APPLICATION: "get_pendency",
				CREATE_FRIEND_GROUP: "group_add",
				DELETE_FRIEND_GROUP: "group_delete",
				UPDATE_FRIEND_GROUP: "group_update",
				GET_BLACKLIST: "black_list_get",
				ADD_BLACKLIST: "black_list_add",
				DELETE_BLACKLIST: "black_list_delete",
				CREATE_GROUP: "create_group",
				GET_JOINED_GROUPS: "get_joined_group_list",
				SEND_MESSAGE: "sendmsg",
				REVOKE_C2C_MESSAGE: "msgwithdraw",
				DELETE_C2C_MESSAGE: "delete_c2c_msg_ramble",
				SEND_GROUP_MESSAGE: "send_group_msg",
				REVOKE_GROUP_MESSAGE: "group_msg_recall",
				DELETE_GROUP_MESSAGE: "delete_group_ramble_msg_by_seq",
				GET_GROUP_INFO: "get_group_info",
				GET_GROUP_MEMBER_INFO: "get_specified_group_member_info",
				GET_GROUP_MEMBER_LIST: "get_group_member_info",
				QUIT_GROUP: "quit_group",
				CHANGE_GROUP_OWNER: "change_group_owner",
				DESTROY_GROUP: "destroy_group",
				ADD_GROUP_MEMBER: "add_group_member",
				DELETE_GROUP_MEMBER: "delete_group_member",
				SEARCH_GROUP_BY_ID: "get_group_public_info",
				APPLY_JOIN_GROUP: "apply_join_group",
				HANDLE_APPLY_JOIN_GROUP: "handle_apply_join_group",
				HANDLE_GROUP_INVITATION: "handle_invite_join_group",
				MODIFY_GROUP_INFO: "modify_group_base_info",
				MODIFY_GROUP_MEMBER_INFO: "modify_group_member_info",
				DELETE_GROUP_SYSTEM_MESSAGE: "deletemsg",
				DELETE_GROUP_AT_TIPS: "deletemsg",
				GET_CONVERSATION_LIST: "get",
				PAGING_GET_CONVERSATION_LIST: "page_get",
				DELETE_CONVERSATION: "delete",
				GET_MESSAGES: "getmsg",
				GET_C2C_ROAM_MESSAGES: "getroammsg",
				GET_GROUP_ROAM_MESSAGES: "group_msg_get",
				SET_C2C_MESSAGE_READ: "msgreaded",
				GET_PEER_READ_TIME: "get_peer_read_time",
				SET_GROUP_MESSAGE_READ: "msg_read_report",
				FILE_READ_AND_WRITE_AUTHKEY: "authkey",
				FILE_UPLOAD: "pic_up",
				COS_SIGN: "cos",
				COS_PRE_SIG: "pre_sig",
				TIM_WEB_REPORT_V2: "tim_web_report_v2",
				BIG_DATA_HALLWAY_AUTH_KEY: "authkey",
				GET_ONLINE_MEMBER_NUM: "get_online_member_num",
				ALIVE: "alive",
				MESSAGE_PUSH: "msg_push",
				MESSAGE_PUSH_ACK: "ws_msg_push_ack",
				STATUS_FORCEOFFLINE: "stat_forceoffline",
				DOWNLOAD_MERGER_MESSAGE: "get_relay_json_msg",
				UPLOAD_MERGER_MESSAGE: "save_relay_json_msg",
				FETCH_CLOUD_CONTROL_CONFIG: "fetch_config",
				PUSHED_CLOUD_CONTROL_CONFIG: "push_configv2"
			},
			CHANNEL: {
				SOCKET: 1,
				XHR: 2,
				AUTO: 0
			},
			NAME_VERSION: {
				openim: "v4",
				group_open_http_svc: "v4",
				sns: "v4",
				profile: "v4",
				recentcontact: "v4",
				openpic: "v4",
				group_open_http_noauth_svc: "v4",
				group_open_long_polling_http_svc: "v4",
				group_open_long_polling_http_noauth_svc: "v4",
				imopenstat: "v4",
				im_cos_sign_svr: "v4",
				im_cos_msg: "v4",
				webim: "v4",
				im_open_push: "v4",
				im_open_status: "v4"
			}
		};
	Bs.HOST.setCurrent(Vs);
	var js, Hs, $s, Ys = "undefined" != typeof wx && "function" == typeof wx.getSystemInfoSync && Boolean(wx
			.getSystemInfoSync().fontSizeSetting),
		zs = "undefined" != typeof qq && "function" == typeof qq.getSystemInfoSync && Boolean(qq
			.getSystemInfoSync().fontSizeSetting),
		Ws = "undefined" != typeof tt && "function" == typeof tt.getSystemInfoSync && Boolean(tt
			.getSystemInfoSync().fontSizeSetting),
		Js = "undefined" != typeof swan && "function" == typeof swan.getSystemInfoSync && Boolean(swan
			.getSystemInfoSync().fontSizeSetting),
		Xs = "undefined" != typeof my && "function" == typeof my.getSystemInfoSync && Boolean(my
			.getSystemInfoSync().fontSizeSetting),
		Qs = "undefined" != typeof uni && "undefined" == typeof window,
		Zs = Ys || zs || Ws || Js || Xs || Qs,
		ei = ("undefined" != typeof uni || "undefined" != typeof window) && !Zs,
		ti = zs ? qq : Ws ? tt : Js ? swan : Xs ? my : Ys ? wx : Qs ? uni : {},
		ni = (js = "WEB", _i ? js = "WEB" : zs ? js = "QQ_MP" : Ws ? js = "TT_MP" : Js ? js = "BAIDU_MP" : Xs ?
			js = "ALI_MP" : Ys ? js = "WX_MP" : Qs && (js = "UNI_NATIVE_APP"), Us[js]),
		oi = ei && window && window.navigator && window.navigator.userAgent || "",
		ri = /AppleWebKit\/([\d.]+)/i.exec(oi),
		ai = (ri && parseFloat(ri.pop()), /iPad/i.test(oi)),
		si = /iPhone/i.test(oi) && !ai,
		ii = /iPod/i.test(oi),
		ci = si || ai || ii,
		ui = (function() {
			var e = oi.match(/OS (\d+)_/i);
			e && e[1] && e[1]
		}(), /Android/i.test(oi)),
		li = function() {
			var e = oi.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);
			if (!e) return null;
			var t = e[1] && parseFloat(e[1]),
				n = e[2] && parseFloat(e[2]);
			return t && n ? parseFloat(e[1] + "." + e[2]) : t || null
		}(),
		di = (ui && /webkit/i.test(oi), /Firefox/i.test(oi), /Edge/i.test(oi)),
		pi = !di && /Chrome/i.test(oi),
		gi = (function() {
			var e = oi.match(/Chrome\/(\d+)/);
			e && e[1] && parseFloat(e[1])
		}(), /MSIE/.test(oi)),
		hi = (/MSIE\s8\.0/.test(oi), function() {
			var e = /MSIE\s(\d+)\.\d/.exec(oi),
				t = e && parseFloat(e[1]);
			return !t && /Trident\/7.0/i.test(oi) && /rv:11.0/.test(oi) && (t = 11), t
		}()),
		fi = (/Safari/i.test(oi), /TBS\/\d+/i.test(oi)),
		_i = (function() {
				var e = oi.match(/TBS\/(\d+)/i);
				if (e && e[1]) e[1]
			}(), !fi && /MQQBrowser\/\d+/i.test(oi), !fi && / QQBrowser\/\d+/i.test(oi),
			/(micromessenger|webbrowser)/i.test(oi)),
		mi = /Windows/i.test(oi),
		vi = /MAC OS X/i.test(oi),
		Mi = (/MicroMessenger/i.test(oi), !A((function() {
			return Object.isExtensible(Object.preventExtensions({}))
		}))),
		yi = k((function(e) {
			var t = ee.f,
				n = he("meta"),
				o = 0,
				r = Object.isExtensible || function() {
					return !0
				},
				a = function(e) {
					t(e, n, {
						value: {
							objectID: "O" + o++,
							weakData: {}
						}
					})
				},
				s = e.exports = {
					REQUIRED: !1,
					fastKey: function(e, t) {
						if (!V(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" :
							"P") + e;
						if (!H(e, n)) {
							if (!r(e)) return "F";
							if (!t) return "E";
							a(e)
						}
						return e[n].objectID
					},
					getWeakData: function(e, t) {
						if (!H(e, n)) {
							if (!r(e)) return !0;
							if (!t) return !1;
							a(e)
						}
						return e[n].weakData
					},
					onFreeze: function(e) {
						return Mi && s.REQUIRED && r(e) && !H(e, n) && a(e), e
					}
				};
			me[n] = !0
		})),
		Ii = (yi.REQUIRED, yi.fastKey, yi.getWeakData, yi.onFreeze, ee.f),
		Si = yi.fastKey,
		Ti = Ee.set,
		Ei = Ee.getterFor,
		Di = (function(e, t, n) {
				var o = -1 !== e.indexOf("Map"),
					r = -1 !== e.indexOf("Weak"),
					a = o ? "set" : "add",
					s = N[e],
					i = s && s.prototype,
					c = s,
					u = {},
					l = function(e) {
						var t = i[e];
						De(i, e, "add" == e ? function(e) {
							return t.call(this, 0 === e ? 0 : e), this
						} : "delete" == e ? function(e) {
							return !(r && !V(e)) && t.call(this, 0 === e ? 0 : e)
						} : "get" == e ? function(e) {
							return r && !V(e) ? void 0 : t.call(this, 0 === e ? 0 : e)
						} : "has" == e ? function(e) {
							return !(r && !V(e)) && t.call(this, 0 === e ? 0 : e)
						} : function(e, n) {
							return t.call(this, 0 === e ? 0 : e, n), this
						})
					};
				if (Ze(e, "function" != typeof s || !(r || i.forEach && !A((function() {
						(new s).entries().next()
					}))))) c = n.getConstructor(t, e, o, a), yi.REQUIRED = !0;
				else if (Ze(e, !0)) {
					var d = new c,
						p = d[a](r ? {} : -0, 1) != d,
						g = A((function() {
							d.has(1)
						})),
						h = mn((function(e) {
							new s(e)
						})),
						f = !r && A((function() {
							for (var e = new s, t = 5; t--;) e[a](t, t);
							return !e.has(-0)
						}));
					h || ((c = t((function(t, n) {
						pa(t, c, e);
						var r = go(new s, t, c);
						return null != n && ha(n, r[a], {
							that: r,
							AS_ENTRIES: o
						}), r
					}))).prototype = i, i.constructor = c), (g || f) && (l("delete"), l("has"), o && l(
						"get")), (f || p) && l(a), r && i.clear && delete i.clear
				}
				u[e] = c, nt({
					global: !0,
					forced: c != s
				}, u), wn(c, e), r || n.setStrong(c, e, o)
			}("Map", (function(e) {
				return function() {
					return e(this, arguments.length ? arguments[0] : void 0)
				}
			}), {
				getConstructor: function(e, t, n, o) {
					var r = e((function(e, a) {
							pa(e, r, t), Ti(e, {
								type: t,
								index: It(null),
								first: void 0,
								last: void 0,
								size: 0
							}), O || (e.size = 0), null != a && ha(a, e[o], {
								that: e,
								AS_ENTRIES: n
							})
						})),
						a = Ei(t),
						s = function(e, t, n) {
							var o, r, s = a(e),
								c = i(e, t);
							return c ? c.value = n : (s.last = c = {
									index: r = Si(t, !0),
									key: t,
									value: n,
									previous: o = s.last,
									next: void 0,
									removed: !1
								}, s.first || (s.first = c), o && (o.next = c), O ? s.size++ : e
								.size++, "F" !== r && (s.index[r] = c)), e
						},
						i = function(e, t) {
							var n, o = a(e),
								r = Si(t);
							if ("F" !== r) return o.index[r];
							for (n = o.first; n; n = n.next)
								if (n.key == t) return n
						};
					return ua(r.prototype, {
						clear: function() {
							for (var e = a(this), t = e.index, n = e.first; n;) n
								.removed = !0, n.previous && (n.previous = n.previous.next =
									void 0), delete t[n.index], n = n.next;
							e.first = e.last = void 0, O ? e.size = 0 : this.size = 0
						},
						delete: function(e) {
							var t = a(this),
								n = i(this, e);
							if (n) {
								var o = n.next,
									r = n.previous;
								delete t.index[n.index], n.removed = !0, r && (r.next = o),
									o && (o.previous = r), t.first == n && (t.first = o), t
									.last == n && (t.last = r), O ? t.size-- : this.size--
							}
							return !!n
						},
						forEach: function(e) {
							for (var t, n = a(this), o = Dt(e, arguments.length > 1 ?
									arguments[1] : void 0, 3); t = t ? t.next : n.first;)
								for (o(t.value, t.key, this); t && t.removed;) t = t
									.previous
						},
						has: function(e) {
							return !!i(this, e)
						}
					}), ua(r.prototype, n ? {
						get: function(e) {
							var t = i(this, e);
							return t && t.value
						},
						set: function(e, t) {
							return s(this, 0 === e ? 0 : e, t)
						}
					} : {
						add: function(e) {
							return s(this, e = 0 === e ? 0 : e, e)
						}
					}), O && Ii(r.prototype, "size", {
						get: function() {
							return a(this).size
						}
					}), r
				},
				setStrong: function(e, t, n) {
					var o = t + " Iterator",
						r = Ei(t),
						a = Ei(o);
					Kn(e, t, (function(e, t) {
						Ti(this, {
							type: o,
							target: e,
							state: r(e),
							kind: t,
							last: void 0
						})
					}), (function() {
						for (var e = a(this), t = e.kind, n = e.last; n && n.removed;) n = n
							.previous;
						return e.target && (e.last = n = n ? n.next : e.state.first) ?
							"keys" == t ? {
								value: n.key,
								done: !1
							} : "values" == t ? {
								value: n.value,
								done: !1
							} : {
								value: [n.key, n.value],
								done: !1
							} : (e.target = void 0, {
								value: void 0,
								done: !0
							})
					}), n ? "entries" : "values", !n, !0), da(t)
				}
			}), "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" !=
			typeof window ? window : {});
	Hs = "undefined" != typeof console ? console : void 0 !== Di && Di.console ? Di.console : "undefined" !=
		typeof window && window.console ? window.console : {};
	for (var ki = function() {}, Ci = ["assert", "clear", "count", "debug", "dir", "dirxml", "error",
			"exception", "group", "groupCollapsed", "groupEnd", "info", "log", "markTimeline", "profile",
			"profileEnd", "table", "time", "timeEnd", "timeStamp", "trace", "warn"
		], Ni = Ci.length; Ni--;) $s = Ci[Ni], console[$s] || (Hs[$s] = ki);
	Hs.methods = Ci;
	var Ai = Hs,
		Oi = 0,
		Li = function() {
			return (new Date).getTime() + Oi
		},
		Ri = function() {
			Oi = 0
		},
		wi = 0,
		bi = new Map;

	function Pi() {
		var e, t = ((e = new Date).setTime(Li()), e);
		return "TIM " + t.toLocaleTimeString("en-US", {
			hour12: !1
		}) + "." + function(e) {
			var t;
			switch (e.toString().length) {
				case 1:
					t = "00" + e;
					break;
				case 2:
					t = "0" + e;
					break;
				default:
					t = e
			}
			return t
		}(t.getMilliseconds()) + ":"
	}
	var Gi = {
			arguments2String: function(e) {
				var t;
				if (1 === e.length) t = Pi() + e[0];
				else {
					t = Pi();
					for (var n = 0, o = e.length; n < o; n++) Hi(e[n]) ? Yi(e[n]) ? t += Zi(e[n]) : t +=
						JSON.stringify(e[n]) : t += e[n], t += " "
				}
				return t
			},
			debug: function() {
				if (wi <= -1) {
					var e = this.arguments2String(arguments);
					Ai.debug(e)
				}
			},
			log: function() {
				if (wi <= 0) {
					var e = this.arguments2String(arguments);
					Ai.log(e)
				}
			},
			info: function() {
				if (wi <= 1) {
					var e = this.arguments2String(arguments);
					Ai.info(e)
				}
			},
			warn: function() {
				if (wi <= 2) {
					var e = this.arguments2String(arguments);
					Ai.warn(e)
				}
			},
			error: function() {
				if (wi <= 3) {
					var e = this.arguments2String(arguments);
					Ai.error(e)
				}
			},
			time: function(e) {
				bi.set(e, Xi.now())
			},
			timeEnd: function(e) {
				if (bi.has(e)) {
					var t = Xi.now() - bi.get(e);
					return bi.delete(e), t
				}
				return Ai.warn("未找到对应label: ".concat(e, ", 请在调用 logger.timeEnd 前，调用 logger.time")), 0
			},
			setLevel: function(e) {
				e < 4 && Ai.log(Pi() + "set level from " + wi + " to " + e), wi = e
			},
			getLevel: function() {
				return wi
			}
		},
		Ui = ["url"],
		Fi = function(e) {
			return "file" === zi(e)
		},
		qi = function(e) {
			return null !== e && ("number" == typeof e && !isNaN(e - 0) || "object" === n(e) && e
				.constructor === Number)
		},
		xi = function(e) {
			return "string" == typeof e
		},
		Vi = function(e) {
			return null !== e && "object" === n(e)
		},
		Ki = function(e) {
			if ("object" !== n(e) || null === e) return !1;
			var t = Object.getPrototypeOf(e);
			if (null === t) return !0;
			for (var o = t; null !== Object.getPrototypeOf(o);) o = Object.getPrototypeOf(o);
			return t === o
		},
		Bi = function(e) {
			return "function" == typeof Array.isArray ? Array.isArray(e) : "array" === zi(e)
		},
		ji = function(e) {
			return void 0 === e
		},
		Hi = function(e) {
			return Bi(e) || Vi(e)
		},
		$i = function(e) {
			return "function" == typeof e
		},
		Yi = function(e) {
			return e instanceof Error
		},
		zi = function(e) {
			return Object.prototype.toString.call(e).match(/^\[object (.*)\]$/)[1].toLowerCase()
		},
		Wi = function(e) {
			if ("string" != typeof e) return !1;
			var t = e[0];
			return !/[^a-zA-Z0-9]/.test(t)
		},
		Ji = 0;
	Date.now || (Date.now = function() {
		return (new Date).getTime()
	});
	var Xi = {
			now: function() {
				0 === Ji && (Ji = Date.now() - 1);
				var e = Date.now() - Ji;
				return e > 4294967295 ? (Ji += 4294967295, Date.now() - Ji) : e
			},
			utc: function() {
				return Math.round(Date.now() / 1e3)
			}
		},
		Qi = function e(t, n, o, r) {
			if (!Hi(t) || !Hi(n)) return 0;
			for (var a, s = 0, i = Object.keys(n), c = 0, u = i.length; c < u; c++)
				if (a = i[c], !(ji(n[a]) || o && o.includes(a)))
					if (Hi(t[a]) && Hi(n[a])) s += e(t[a], n[a], o, r);
					else {
						if (r && r.includes(n[a])) continue;
						t[a] !== n[a] && (t[a] = n[a], s += 1)
					} return s
		},
		Zi = function(e) {
			return JSON.stringify(e, ["message", "code"])
		},
		ec = function(e) {
			if (0 === e.length) return 0;
			for (var t = 0, n = 0, o = "undefined" != typeof document && void 0 !== document.characterSet ?
					document.characterSet : "UTF-8"; void 0 !== e[t];) n += e[t++].charCodeAt[t] <= 255 ? 1 : !
				1 === o ? 3 : 2;
			return n
		},
		tc = function(e) {
			var t = e || 99999999;
			return Math.round(Math.random() * t)
		},
		nc = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
		oc = nc.length,
		rc = function(e, t) {
			for (var n in e)
				if (e[n] === t) return !0;
			return !1
		},
		ac = {},
		sc = function() {
			if (Zs) return "https:";
			if (ei && "undefined" == typeof window) return "https:";
			var e = window.location.protocol;
			return ["http:", "https:"].indexOf(e) < 0 && (e = "http:"), e
		},
		ic = function(e) {
			return -1 === e.indexOf("http://") || -1 === e.indexOf("https://") ? "https://" + e : e.replace(
				/https|http/, "https")
		},
		cc = function e(t) {
			if (0 === Object.getOwnPropertyNames(t).length) return Object.create(null);
			var o = Array.isArray(t) ? [] : Object.create(null),
				r = "";
			for (var a in t) null !== t[a] ? void 0 !== t[a] ? (r = n(t[a]), ["string", "number", "function",
				"boolean"
			].indexOf(r) >= 0 ? o[a] = t[a] : o[a] = e(t[a])) : o[a] = void 0 : o[a] = null;
			return o
		};

	function uc(e, t) {
		Bi(e) && Bi(t) ? t.forEach((function(t) {
			var n = t.key,
				o = t.value,
				r = e.find((function(e) {
					return e.key === n
				}));
			r ? r.value = o : e.push({
				key: n,
				value: o
			})
		})) : Gi.warn("updateCustomField target 或 source 不是数组，忽略此次更新。")
	}
	var lc = function(e) {
			return e === Zn.GRP_PUBLIC
		},
		dc = function(e) {
			return e === Zn.GRP_AVCHATROOM
		},
		pc = function(e) {
			return xi(e) && e === Zn.CONV_SYSTEM
		};

	function gc(e, t) {
		var n = {};
		return Object.keys(e).forEach((function(o) {
			n[o] = t(e[o], o)
		})), n
	}

	function hc() {
		function e() {
			return (65536 * (1 + Math.random()) | 0).toString(16).substring(1)
		}
		return "".concat(e() + e()).concat(e()).concat(e()).concat(e()).concat(e()).concat(e()).concat(e())
	}

	function fc() {
		var e = "unknown";
		if (vi && (e = "mac"), mi && (e = "windows"), ci && (e = "ios"), ui && (e = "android"), Zs) try {
			var t = ti.getSystemInfoSync().platform;
			void 0 !== t && (e = t)
		} catch (Hv) {}
		return e
	}

	function _c(e) {
		var t = e.originUrl,
			n = void 0 === t ? void 0 : t,
			o = e.originWidth,
			r = e.originHeight,
			a = e.min,
			s = void 0 === a ? 198 : a,
			i = parseInt(o),
			c = parseInt(r),
			u = {
				url: void 0,
				width: 0,
				height: 0
			};
		return (i <= c ? i : c) <= s ? (u.url = n, u.width = i, u.height = c) : (c <= i ? (u.width = Math.ceil(
				i * s / c), u.height = s) : (u.width = s, u.height = Math.ceil(c * s / i)), u.url = ""
			.concat(n, 198 === s ? "?imageView2/3/w/198/h/198" : "?imageView2/3/w/720/h/720")), ji(n) ? g(u,
			Ui) : u
	}

	function mc(e) {
		var t = e[2];
		e[2] = e[1], e[1] = t;
		for (var n = 0; n < e.length; n++) e[n].setType(n)
	}

	function vc(e) {
		var t = e.servcmd;
		return t.slice(t.indexOf(".") + 1)
	}

	function Mc(e, t) {
		return Math.round(Number(e) * Math.pow(10, t)) / Math.pow(10, t)
	}

	function yc(e, t) {
		return e.includes(t)
	}

	function Ic(e, t) {
		return e.includes(t)
	}
	var Sc = Object.prototype.hasOwnProperty;

	function Tc(e) {
		if (null == e) return !0;
		if ("boolean" == typeof e) return !1;
		if ("number" == typeof e) return 0 === e;
		if ("string" == typeof e) return 0 === e.length;
		if ("function" == typeof e) return 0 === e.length;
		if (Array.isArray(e)) return 0 === e.length;
		if (e instanceof Error) return "" === e.message;
		if (Ki(e)) {
			for (var t in e)
				if (Sc.call(e, t)) return !1;
			return !0
		}
		return !("map" !== zi(e) && ! function(e) {
			return "set" === zi(e)
		}(e) && !Fi(e)) && 0 === e.size
	}

	function Ec(e, t, n) {
		if (void 0 === t) return !0;
		var o = !0;
		if ("object" === po(t).toLowerCase()) Object.keys(t).forEach((function(r) {
			var a = 1 === e.length ? e[0][r] : void 0;
			o = !!Dc(a, t[r], n, r) && o
		}));
		else if ("array" === po(t).toLowerCase())
			for (var r = 0; r < t.length; r++) o = !!Dc(e[r], t[r], n, t[r].name) && o;
		if (o) return o;
		throw new Error("Params validate failed.")
	}

	function Dc(e, t, n, o) {
		if (void 0 === t) return !0;
		var r = !0;
		return t.required && Tc(e) && (Ai.error("TIM [".concat(n, '] Missing required params: "').concat(o,
			'".')), r = !1), Tc(e) || po(e).toLowerCase() === t.type.toLowerCase() || (Ai.error("TIM ["
			.concat(n, '] Invalid params: type check failed for "').concat(o, '".Expected ').concat(t
				.type, ".")), r = !1), t.validator && !t.validator(e) && (Ai.error("TIM [".concat(n,
			"] Invalid params: custom validator check failed for params.")), r = !1), r
	}
	var kc = {
			f: Ut
		},
		Cc = ee.f,
		Nc = Kt.forEach,
		Ac = _e("hidden"),
		Oc = Ut("toPrimitive"),
		Lc = Ee.set,
		Rc = Ee.getterFor("Symbol"),
		wc = Object.prototype,
		bc = N.Symbol,
		Pc = Ne("JSON", "stringify"),
		Gc = X.f,
		Uc = ee.f,
		Fc = ea.f,
		qc = w.f,
		xc = de("symbols"),
		Vc = de("op-symbols"),
		Kc = de("string-to-symbol-registry"),
		Bc = de("symbol-to-string-registry"),
		jc = de("wks"),
		Hc = N.QObject,
		$c = !Hc || !Hc.prototype || !Hc.prototype.findChild,
		Yc = O && A((function() {
			return 7 != It(Uc({}, "a", {
				get: function() {
					return Uc(this, "a", {
						value: 7
					}).a
				}
			})).a
		})) ? function(e, t, n) {
			var o = Gc(wc, t);
			o && delete wc[t], Uc(e, t, n), o && e !== wc && Uc(wc, t, o)
		} : Uc,
		zc = function(e, t) {
			var n = xc[e] = It(bc.prototype);
			return Lc(n, {
				type: "Symbol",
				tag: e,
				description: t
			}), O || (n.description = t), n
		},
		Wc = wt ? function(e) {
			return "symbol" == typeof e
		} : function(e) {
			return Object(e) instanceof bc
		},
		Jc = function(e, t, n) {
			e === wc && Jc(Vc, t, n), Q(e);
			var o = K(t, !0);
			return Q(n), H(xc, o) ? (n.enumerable ? (H(e, Ac) && e[Ac][o] && (e[Ac][o] = !1), n = It(n, {
				enumerable: b(0, !1)
			})) : (H(e, Ac) || Uc(e, Ac, b(1, {})), e[Ac][o] = !0), Yc(e, o, n)) : Uc(e, o, n)
		},
		Xc = function(e, t) {
			Q(e);
			var n = x(t),
				o = ht(n).concat(tu(n));
			return Nc(o, (function(t) {
				O && !Qc.call(n, t) || Jc(e, t, n[t])
			})), e
		},
		Qc = function(e) {
			var t = K(e, !0),
				n = qc.call(this, t);
			return !(this === wc && H(xc, t) && !H(Vc, t)) && (!(n || !H(this, t) || !H(xc, t) || H(this, Ac) &&
				this[Ac][t]) || n)
		},
		Zc = function(e, t) {
			var n = x(e),
				o = K(t, !0);
			if (n !== wc || !H(xc, o) || H(Vc, o)) {
				var r = Gc(n, o);
				return !r || !H(xc, o) || H(n, Ac) && n[Ac][o] || (r.enumerable = !0), r
			}
		},
		eu = function(e) {
			var t = Fc(x(e)),
				n = [];
			return Nc(t, (function(e) {
				H(xc, e) || H(me, e) || n.push(e)
			})), n
		},
		tu = function(e) {
			var t = e === wc,
				n = Fc(t ? Vc : x(e)),
				o = [];
			return Nc(n, (function(e) {
				!H(xc, e) || t && !H(wc, e) || o.push(xc[e])
			})), o
		};
	if (Rt || (De((bc = function() {
			if (this instanceof bc) throw TypeError("Symbol is not a constructor");
			var e = arguments.length && void 0 !== arguments[0] ? String(arguments[0]) : void 0,
				t = he(e),
				n = function(e) {
					this === wc && n.call(Vc, e), H(this, Ac) && H(this[Ac], t) && (this[Ac][t] = !
						1), Yc(this, t, b(1, e))
				};
			return O && $c && Yc(wc, t, {
				configurable: !0,
				set: n
			}), zc(t, e)
		}).prototype, "toString", (function() {
			return Rc(this).tag
		})), De(bc, "withoutSetter", (function(e) {
			return zc(he(e), e)
		})), w.f = Qc, ee.f = Jc, X.f = Zc, Be.f = ea.f = eu, je.f = tu, kc.f = function(e) {
			return zc(Ut(e), e)
		}, O && (Uc(bc.prototype, "description", {
			configurable: !0,
			get: function() {
				return Rc(this).description
			}
		}), De(wc, "propertyIsEnumerable", Qc, {
			unsafe: !0
		}))), nt({
			global: !0,
			wrap: !0,
			forced: !Rt,
			sham: !Rt
		}, {
			Symbol: bc
		}), Nc(ht(jc), (function(e) {
			! function(e) {
				var t = ke.Symbol || (ke.Symbol = {});
				H(t, e) || Cc(t, e, {
					value: kc.f(e)
				})
			}(e)
		})), nt({
			target: "Symbol",
			stat: !0,
			forced: !Rt
		}, {
			for: function(e) {
				var t = String(e);
				if (H(Kc, t)) return Kc[t];
				var n = bc(t);
				return Kc[t] = n, Bc[n] = t, n
			},
			keyFor: function(e) {
				if (!Wc(e)) throw TypeError(e + " is not a symbol");
				if (H(Bc, e)) return Bc[e]
			},
			useSetter: function() {
				$c = !0
			},
			useSimple: function() {
				$c = !1
			}
		}), nt({
			target: "Object",
			stat: !0,
			forced: !Rt,
			sham: !O
		}, {
			create: function(e, t) {
				return void 0 === t ? It(e) : Xc(It(e), t)
			},
			defineProperty: Jc,
			defineProperties: Xc,
			getOwnPropertyDescriptor: Zc
		}), nt({
			target: "Object",
			stat: !0,
			forced: !Rt
		}, {
			getOwnPropertyNames: eu,
			getOwnPropertySymbols: tu
		}), nt({
			target: "Object",
			stat: !0,
			forced: A((function() {
				je.f(1)
			}))
		}, {
			getOwnPropertySymbols: function(e) {
				return je.f(B(e))
			}
		}), Pc) {
		var nu = !Rt || A((function() {
			var e = bc();
			return "[null]" != Pc([e]) || "{}" != Pc({
				a: e
			}) || "{}" != Pc(Object(e))
		}));
		nt({
			target: "JSON",
			stat: !0,
			forced: nu
		}, {
			stringify: function(e, t, n) {
				for (var o, r = [e], a = 1; arguments.length > a;) r.push(arguments[a++]);
				if (o = t, (V(t) || void 0 !== e) && !Wc(e)) return kt(t) || (t = function(e, t) {
					if ("function" == typeof o && (t = o.call(this, e, t)), !Wc(t))
						return t
				}), r[1] = t, Pc.apply(null, r)
			}
		})
	}
	bc.prototype[Oc] || te(bc.prototype, Oc, bc.prototype.valueOf), wn(bc, "Symbol"), me[Ac] = !0;
	var ou = ee.f,
		ru = N.Symbol;
	if (O && "function" == typeof ru && (!("description" in ru.prototype) || void 0 !== ru().description)) {
		var au = {},
			su = function() {
				var e = arguments.length < 1 || void 0 === arguments[0] ? void 0 : String(arguments[0]),
					t = this instanceof su ? new ru(e) : void 0 === e ? ru() : ru(e);
				return "" === e && (au[t] = !0), t
			};
		$e(su, ru);
		var iu = su.prototype = ru.prototype;
		iu.constructor = su;
		var cu = iu.toString,
			uu = "Symbol(test)" == String(ru("test")),
			lu = /^Symbol\((.*)\)[^)]+$/;
		ou(iu, "description", {
			configurable: !0,
			get: function() {
				var e = V(this) ? this.valueOf() : this,
					t = cu.call(e);
				if (H(au, e)) return "";
				var n = uu ? t.slice(7, -1) : t.replace(lu, "$1");
				return "" === n ? void 0 : n
			}
		}), nt({
			global: !0,
			forced: !0
		}, {
			Symbol: su
		})
	}
	var du, pu = X.f,
		gu = "".startsWith,
		hu = Math.min,
		fu = lr("startsWith"),
		_u = !(fu || (du = pu(String.prototype, "startsWith"), !du || du.writable));
	nt({
		target: "String",
		proto: !0,
		forced: !_u && !fu
	}, {
		startsWith: function(e) {
			var t = String(q(this));
			cr(e);
			var n = we(hu(arguments.length > 1 ? arguments[1] : void 0, t.length)),
				o = String(e);
			return gu ? gu.call(t, o, n) : t.slice(n, n + o.length) === o
		}
	});
	var mu = {
			UNSEND: "unSend",
			SUCCESS: "success",
			FAIL: "fail"
		},
		vu = {
			NOT_START: "notStart",
			PENDING: "pengding",
			RESOLVED: "resolved",
			REJECTED: "rejected"
		},
		Mu = function(e) {
			return !!e && (!!(function(e) {
				return xi(e) && e.slice(0, 3) === Zn.CONV_C2C
			}(e) || function(e) {
				return xi(e) && e.slice(0, 5) === Zn.CONV_GROUP
			}(e) || pc(e)) || (console.warn("非法的会话 ID:".concat(e,
				"。会话 ID 组成方式：C2C + userID（单聊）GROUP + groupID（群聊）@TIM#SYSTEM（系统通知会话）")), !1))
		},
		yu = "请参考 https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#",
		Iu = function(e) {
			return e.param ? "".concat(e.api, " ").concat(e.param, " ").concat(e.desc, "。").concat(yu).concat(e
				.api) : "".concat(e.api, " ").concat(e.desc, "。").concat(yu).concat(e.api)
		},
		Su = {
			type: "String",
			required: !0
		},
		Tu = {
			type: "Array",
			required: !0
		},
		Eu = {
			type: "Object",
			required: !0
		},
		Du = {
			login: {
				userID: Su,
				userSig: Su
			},
			addToBlacklist: {
				userIDList: Tu
			},
			on: [{
				name: "eventName",
				type: "String",
				validator: function(e) {
					return "string" == typeof e && 0 !== e.length || (console.warn(Iu({
						api: "on",
						param: "eventName",
						desc: "类型必须为 String，且不能为空"
					})), !1)
				}
			}, {
				name: "handler",
				type: "Function",
				validator: function(e) {
					return "function" != typeof e ? (console.warn(Iu({
						api: "on",
						param: "handler",
						desc: "参数必须为 Function"
					})), !1) : ("" === e.name && console.warn(
						"on 接口的 handler 参数推荐使用具名函数。具名函数可以使用 off 接口取消订阅，匿名函数无法取消订阅。"), !0)
				}
			}],
			once: [{
				name: "eventName",
				type: "String",
				validator: function(e) {
					return "string" == typeof e && 0 !== e.length || (console.warn(Iu({
						api: "once",
						param: "eventName",
						desc: "类型必须为 String，且不能为空"
					})), !1)
				}
			}, {
				name: "handler",
				type: "Function",
				validator: function(e) {
					return "function" != typeof e ? (console.warn(Iu({
						api: "once",
						param: "handler",
						desc: "参数必须为 Function"
					})), !1) : ("" === e.name && console.warn("once 接口的 handler 参数推荐使用具名函数。"), !
						0)
				}
			}],
			off: [{
				name: "eventName",
				type: "String",
				validator: function(e) {
					return "string" == typeof e && 0 !== e.length || (console.warn(Iu({
						api: "off",
						param: "eventName",
						desc: "类型必须为 String，且不能为空"
					})), !1)
				}
			}, {
				name: "handler",
				type: "Function",
				validator: function(e) {
					return "function" != typeof e ? (console.warn(Iu({
						api: "off",
						param: "handler",
						desc: "参数必须为 Function"
					})), !1) : ("" === e.name && console.warn("off 接口无法为匿名函数取消监听事件。"), !0)
				}
			}],
			sendMessage: [t({
				name: "message"
			}, Eu)],
			getMessageList: {
				conversationID: t(t({}, Su), {}, {
					validator: function(e) {
						return Mu(e)
					}
				}),
				nextReqMessageID: {
					type: "String"
				},
				count: {
					type: "Number",
					validator: function(e) {
						return !(!ji(e) && !/^[1-9][0-9]*$/.test(e)) || (console.warn(Iu({
							api: "getMessageList",
							param: "count",
							desc: "必须为正整数"
						})), !1)
					}
				}
			},
			setMessageRead: {
				conversationID: t(t({}, Su), {}, {
					validator: function(e) {
						return Mu(e)
					}
				})
			},
			getConversationProfile: [t(t({
				name: "conversationID"
			}, Su), {}, {
				validator: function(e) {
					return Mu(e)
				}
			})],
			deleteConversation: [t(t({
				name: "conversationID"
			}, Su), {}, {
				validator: function(e) {
					return Mu(e)
				}
			})],
			getGroupList: {
				groupProfileFilter: {
					type: "Array"
				}
			},
			getGroupProfile: {
				groupID: Su,
				groupCustomFieldFilter: {
					type: "Array"
				},
				memberCustomFieldFilter: {
					type: "Array"
				}
			},
			getGroupProfileAdvance: {
				groupIDList: Tu
			},
			createGroup: {
				name: Su
			},
			joinGroup: {
				groupID: Su,
				type: {
					type: "String"
				},
				applyMessage: {
					type: "String"
				}
			},
			quitGroup: [t({
				name: "groupID"
			}, Su)],
			handleApplication: {
				message: Eu,
				handleAction: Su,
				handleMessage: {
					type: "String"
				}
			},
			changeGroupOwner: {
				groupID: Su,
				newOwnerID: Su
			},
			updateGroupProfile: {
				groupID: Su,
				muteAllMembers: {
					type: "Boolean"
				}
			},
			dismissGroup: [t({
				name: "groupID"
			}, Su)],
			searchGroupByID: [t({
				name: "groupID"
			}, Su)],
			getGroupMemberList: {
				groupID: Su,
				offset: {
					type: "Number"
				},
				count: {
					type: "Number"
				}
			},
			getGroupMemberProfile: {
				groupID: Su,
				userIDList: Tu,
				memberCustomFieldFilter: {
					type: "Array"
				}
			},
			addGroupMember: {
				groupID: Su,
				userIDList: Tu
			},
			setGroupMemberRole: {
				groupID: Su,
				userID: Su,
				role: Su
			},
			setGroupMemberMuteTime: {
				groupID: Su,
				userID: Su,
				muteTime: {
					type: "Number",
					validator: function(e) {
						return e >= 0
					}
				}
			},
			setGroupMemberNameCard: {
				groupID: Su,
				userID: Su,
				nameCard: {
					type: "String",
					validator: function(e) {
						return xi(e) ? (e.length, !0) : (console.warn(Iu({
							api: "setGroupMemberNameCard",
							param: "nameCard",
							desc: "类型必须为 String"
						})), !1)
					}
				}
			},
			setMessageRemindType: {
				groupID: Su,
				messageRemindType: Su
			},
			setGroupMemberCustomField: {
				groupID: Su,
				userID: {
					type: "String"
				},
				memberCustomField: Tu
			},
			deleteGroupMember: {
				groupID: Su
			},
			createTextMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						return Ki(e) ? xi(e.text) ? 0 !== e.text.length || (console.warn(Iu({
							api: "createTextMessage",
							desc: "消息内容不能为空"
						})), !1) : (console.warn(Iu({
							api: "createTextMessage",
							param: "payload.text",
							desc: "类型必须为 String"
						})), !1) : (console.warn(Iu({
							api: "createTextMessage",
							param: "payload",
							desc: "类型必须为 plain object"
						})), !1)
					}
				})
			},
			createTextAtMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						return Ki(e) ? xi(e.text) ? 0 === e.text.length ? (console.warn(Iu({
							api: "createTextAtMessage",
							desc: "消息内容不能为空"
						})), !1) : !(e.atUserList && !Bi(e.atUserList)) || (console.warn(Iu({
							api: "createTextAtMessage",
							desc: "payload.atUserList 类型必须为数组"
						})), !1) : (console.warn(Iu({
							api: "createTextAtMessage",
							param: "payload.text",
							desc: "类型必须为 String"
						})), !1) : (console.warn(Iu({
							api: "createTextAtMessage",
							param: "payload",
							desc: "类型必须为 plain object"
						})), !1)
					}
				})
			},
			createCustomMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						return Ki(e) ? e.data && !xi(e.data) ? (console.warn(Iu({
							api: "createCustomMessage",
							param: "payload.data",
							desc: "类型必须为 String"
						})), !1) : e.description && !xi(e.description) ? (console.warn(Iu({
							api: "createCustomMessage",
							param: "payload.description",
							desc: "类型必须为 String"
						})), !1) : !(e.extension && !xi(e.extension)) || (console.warn(Iu({
							api: "createCustomMessage",
							param: "payload.extension",
							desc: "类型必须为 String"
						})), !1) : (console.warn(Iu({
							api: "createCustomMessage",
							param: "payload",
							desc: "类型必须为 plain object"
						})), !1)
					}
				})
			},
			createImageMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						if (!Ki(e)) return console.warn(Iu({
							api: "createImageMessage",
							param: "payload",
							desc: "类型必须为 plain object"
						})), !1;
						if (ji(e.file)) return console.warn(Iu({
							api: "createImageMessage",
							param: "payload.file",
							desc: "不能为 undefined"
						})), !1;
						if (ei) {
							if (!(e.file instanceof HTMLInputElement || Fi(e.file))) return Ki(e
									.file) && "undefined" != typeof uni ? 0 !== e.file
								.tempFilePaths.length && 0 !== e.file.tempFiles.length || (
									console.warn(Iu({
										api: "createImageMessage",
										param: "payload.file",
										desc: "您没有选择文件，无法发送"
									})), !1) : (console.warn(Iu({
									api: "createImageMessage",
									param: "payload.file",
									desc: "类型必须是 HTMLInputElement 或 File"
								})), !1);
							if (e.file instanceof HTMLInputElement && 0 === e.file.files.length)
								return console.warn(Iu({
									api: "createImageMessage",
									param: "payload.file",
									desc: "您没有选择文件，无法发送"
								})), !1
						}
						return !0
					},
					onProgress: {
						type: "Function",
						required: !1,
						validator: function(e) {
							return ji(e) && console.warn(Iu({
								api: "createImageMessage",
								desc: "没有 onProgress 回调，您将无法获取上传进度"
							})), !0
						}
					}
				})
			},
			createAudioMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						return !!Ki(e) || (console.warn(Iu({
							api: "createAudioMessage",
							param: "payload",
							desc: "类型必须为 plain object"
						})), !1)
					}
				}),
				onProgress: {
					type: "Function",
					required: !1,
					validator: function(e) {
						return ji(e) && console.warn(Iu({
							api: "createAudioMessage",
							desc: "没有 onProgress 回调，您将无法获取上传进度"
						})), !0
					}
				}
			},
			createVideoMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						if (!Ki(e)) return console.warn(Iu({
							api: "createVideoMessage",
							param: "payload",
							desc: "类型必须为 plain object"
						})), !1;
						if (ji(e.file)) return console.warn(Iu({
							api: "createVideoMessage",
							param: "payload.file",
							desc: "不能为 undefined"
						})), !1;
						if (ei) {
							if (!(e.file instanceof HTMLInputElement || Fi(e.file))) return Ki(e
									.file) && "undefined" != typeof uni ? !!Fi(e.file
								.tempFile) || (console.warn(Iu({
									api: "createVideoMessage",
									param: "payload.file",
									desc: "您没有选择文件，无法发送"
								})), !1) : (console.warn(Iu({
									api: "createVideoMessage",
									param: "payload.file",
									desc: "类型必须是 HTMLInputElement 或 File"
								})), !1);
							if (e.file instanceof HTMLInputElement && 0 === e.file.files.length)
								return console.warn(Iu({
									api: "createVideoMessage",
									param: "payload.file",
									desc: "您没有选择文件，无法发送"
								})), !1
						}
						return !0
					}
				}),
				onProgress: {
					type: "Function",
					required: !1,
					validator: function(e) {
						return ji(e) && console.warn(Iu({
							api: "createVideoMessage",
							desc: "没有 onProgress 回调，您将无法获取上传进度"
						})), !0
					}
				}
			},
			createFaceMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						return Ki(e) ? qi(e.index) ? !!xi(e.data) || (console.warn(Iu({
							api: "createFaceMessage",
							param: "payload.data",
							desc: "类型必须为 String"
						})), !1) : (console.warn(Iu({
							api: "createFaceMessage",
							param: "payload.index",
							desc: "类型必须为 Number"
						})), !1) : (console.warn(Iu({
							api: "createFaceMessage",
							param: "payload",
							desc: "类型必须为 plain object"
						})), !1)
					}
				})
			},
			createFileMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						if (!Ki(e)) return console.warn(Iu({
							api: "createFileMessage",
							param: "payload",
							desc: "类型必须为 plain object"
						})), !1;
						if (ji(e.file)) return console.warn(Iu({
							api: "createFileMessage",
							param: "payload.file",
							desc: "不能为 undefined"
						})), !1;
						if (ei) {
							if (!(e.file instanceof HTMLInputElement || Fi(e.file))) return Ki(e
									.file) && "undefined" != typeof uni ? 0 !== e.file
								.tempFilePaths.length && 0 !== e.file.tempFiles.length || (
									console.warn(Iu({
										api: "createFileMessage",
										param: "payload.file",
										desc: "您没有选择文件，无法发送"
									})), !1) : (console.warn(Iu({
									api: "createFileMessage",
									param: "payload.file",
									desc: "类型必须是 HTMLInputElement 或 File"
								})), !1);
							if (e.file instanceof HTMLInputElement && 0 === e.file.files.length)
								return console.warn(Iu({
									api: "createFileMessage",
									desc: "您没有选择文件，无法发送"
								})), !1
						}
						return !0
					}
				}),
				onProgress: {
					type: "Function",
					required: !1,
					validator: function(e) {
						return ji(e) && console.warn(Iu({
							api: "createFileMessage",
							desc: "没有 onProgress 回调，您将无法获取上传进度"
						})), !0
					}
				}
			},
			createMergerMessage: {
				to: Su,
				conversationType: Su,
				payload: t(t({}, Eu), {}, {
					validator: function(e) {
						if (Tc(e.messageList)) return console.warn(Iu({
							api: "createMergerMessage",
							desc: "不能为空数组"
						})), !1;
						if (Tc(e.compatibleText)) return console.warn(Iu({
							api: "createMergerMessage",
							desc: "类型必须为 String，且不能为空"
						})), !1;
						var t = !1;
						return e.messageList.forEach((function(e) {
							e.status === mu.FAIL && (t = !0)
						})), !t || (console.warn(Iu({
							api: "createMergerMessage",
							desc: "不支持合并已发送失败的消息"
						})), !1)
					}
				})
			},
			revokeMessage: [t(t({
				name: "message"
			}, Eu), {}, {
				validator: function(e) {
					return Tc(e) ? (console.warn("revokeMessage 请传入消息（Message）实例"), !1) : e
						.conversationType === Zn.CONV_SYSTEM ? (console.warn(
							"revokeMessage 不能撤回系统会话消息，只能撤回单聊消息或群消息"), !1) : !0 !== e
						.isRevoked || (console.warn("revokeMessage 消息已经被撤回，请勿重复操作"), !1)
				}
			})],
			deleteMessage: [t(t({
				name: "messageList"
			}, Tu), {}, {
				validator: function(e) {
					return !Tc(e) || (console.warn(Iu({
						api: "deleteMessage",
						param: "messageList",
						desc: "不能为空数组"
					})), !1)
				}
			})],
			getUserProfile: {
				userIDList: {
					type: "Array",
					validator: function(e) {
						return Bi(e) ? (0 === e.length && console.warn(Iu({
							api: "getUserProfile",
							param: "userIDList",
							desc: "不能为空数组"
						})), !0) : (console.warn(Iu({
							api: "getUserProfile",
							param: "userIDList",
							desc: "必须为数组"
						})), !1)
					}
				}
			},
			updateMyProfile: {
				profileCustomField: {
					type: "Array",
					validator: function(e) {
						return !!ji(e) || (!!Bi(e) || (console.warn(Iu({
							api: "updateMyProfile",
							param: "profileCustomField",
							desc: "必须为数组"
						})), !1))
					}
				}
			},
			addFriend: {
				to: Su,
				source: {
					type: "String",
					required: !0,
					validator: function(e) {
						return !!e && (e.startsWith("AddSource_Type_") ? !(e.replace("AddSource_Type_", "")
							.length > 8) || (console.warn(Iu({
							api: "addFriend",
							desc: "加好友来源字段的关键字长度不得超过8字节"
						})), !1) : (console.warn(Iu({
							api: "addFriend",
							desc: "加好友来源字段的前缀必须是：AddSource_Type_"
						})), !1))
					}
				},
				remark: {
					type: "String",
					required: !1,
					validator: function(e) {
						return !(xi(e) && e.length > 96) || (console.warn(Iu({
							api: "updateFriend",
							desc: " 备注长度最长不得超过 96 个字节"
						})), !1)
					}
				}
			},
			deleteFriend: {
				userIDList: Tu
			},
			checkFriend: {
				userIDList: Tu
			},
			getFriendProfile: {
				userIDList: Tu
			},
			updateFriend: {
				userID: Su,
				remark: {
					type: "String",
					required: !1,
					validator: function(e) {
						return !(xi(e) && e.length > 96) || (console.warn(Iu({
							api: "updateFriend",
							desc: " 备注长度最长不得超过 96 个字节"
						})), !1)
					}
				},
				friendCustomField: {
					type: "Array",
					required: !1,
					validator: function(e) {
						if (e) {
							if (!Bi(e)) return console.warn(Iu({
								api: "updateFriend",
								param: "friendCustomField",
								desc: "必须为数组"
							})), !1;
							var t = !0;
							return e.forEach((function(e) {
								return xi(e.key) && -1 !== e.key.indexOf("Tag_SNS_Custom") ? xi(
									e.value) ? e.value.length > 8 ? (console.warn(Iu({
									api: "updateFriend",
									desc: "好友自定义字段的关键字长度不得超过8字节"
								})), t = !1) : void 0 : (console.warn(Iu({
									api: "updateFriend",
									desc: "类型必须为 String"
								})), t = !1) : (console.warn(Iu({
									api: "updateFriend",
									desc: "好友自定义字段的前缀必须是 Tag_SNS_Custom"
								})), t = !1)
							})), t
						}
						return !0
					}
				}
			},
			acceptFriendApplication: {
				userID: Su
			},
			refuseFriendApplication: {
				userID: Su
			},
			deleteFriendApplication: {
				userID: Su
			},
			createFriendGroup: {
				name: Su
			},
			deleteFriendGroup: {
				name: Su
			},
			addToFriendGroup: {
				name: Su,
				userIDList: Tu
			},
			removeFromFriendGroup: {
				name: Su,
				userIDList: Tu
			},
			renameFriendGroup: {
				oldName: Su,
				newName: Su
			}
		},
		ku = {
			login: "login",
			logout: "logout",
			on: "on",
			once: "once",
			off: "off",
			setLogLevel: "setLogLevel",
			registerPlugin: "registerPlugin",
			destroy: "destroy",
			createTextMessage: "createTextMessage",
			createTextAtMessage: "createTextAtMessage",
			createImageMessage: "createImageMessage",
			createAudioMessage: "createAudioMessage",
			createVideoMessage: "createVideoMessage",
			createCustomMessage: "createCustomMessage",
			createFaceMessage: "createFaceMessage",
			createFileMessage: "createFileMessage",
			createMergerMessage: "createMergerMessage",
			downloadMergerMessage: "downloadMergerMessage",
			createForwardMessage: "createForwardMessage",
			sendMessage: "sendMessage",
			resendMessage: "resendMessage",
			getMessageList: "getMessageList",
			setMessageRead: "setMessageRead",
			revokeMessage: "revokeMessage",
			deleteMessage: "deleteMessage",
			getConversationList: "getConversationList",
			getConversationProfile: "getConversationProfile",
			deleteConversation: "deleteConversation",
			getGroupList: "getGroupList",
			getGroupProfile: "getGroupProfile",
			createGroup: "createGroup",
			joinGroup: "joinGroup",
			updateGroupProfile: "updateGroupProfile",
			quitGroup: "quitGroup",
			dismissGroup: "dismissGroup",
			changeGroupOwner: "changeGroupOwner",
			searchGroupByID: "searchGroupByID",
			setMessageRemindType: "setMessageRemindType",
			handleGroupApplication: "handleGroupApplication",
			getGroupMemberProfile: "getGroupMemberProfile",
			getGroupMemberList: "getGroupMemberList",
			addGroupMember: "addGroupMember",
			deleteGroupMember: "deleteGroupMember",
			setGroupMemberNameCard: "setGroupMemberNameCard",
			setGroupMemberMuteTime: "setGroupMemberMuteTime",
			setGroupMemberRole: "setGroupMemberRole",
			setGroupMemberCustomField: "setGroupMemberCustomField",
			getGroupOnlineMemberCount: "getGroupOnlineMemberCount",
			getMyProfile: "getMyProfile",
			getUserProfile: "getUserProfile",
			updateMyProfile: "updateMyProfile",
			getBlacklist: "getBlacklist",
			addToBlacklist: "addToBlacklist",
			removeFromBlacklist: "removeFromBlacklist",
			getFriendList: "getFriendList",
			addFriend: "addFriend",
			deleteFriend: "deleteFriend",
			checkFriend: "checkFriend",
			updateFriend: "updateFriend",
			getFriendProfile: "getFriendProfile",
			getFriendApplicationList: "getFriendApplicationList",
			refuseFriendApplication: "refuseFriendApplication",
			deleteFriendApplication: "deleteFriendApplication",
			acceptFriendApplication: "acceptFriendApplication",
			setFriendApplicationRead: "setFriendApplicationRead",
			getFriendGroupList: "getFriendGroupList",
			createFriendGroup: "createFriendGroup",
			renameFriendGroup: "renameFriendGroup",
			deleteFriendGroup: "deleteFriendGroup",
			addToFriendGroup: "addToFriendGroup",
			removeFromFriendGroup: "removeFromFriendGroup",
			callExperimentalAPI: "callExperimentalAPI"
		},
		Cu = !!ca && A((function() {
			ca.prototype.finally.call({
				then: function() {}
			}, (function() {}))
		}));
	if (nt({
			target: "Promise",
			proto: !0,
			real: !0,
			forced: Cu
		}, {
			finally: function(e) {
				var t = _a(this, Ne("Promise")),
					n = "function" == typeof e;
				return this.then(n ? function(n) {
					return ns(t, e()).then((function() {
						return n
					}))
				} : e, n ? function(n) {
					return ns(t, e()).then((function() {
						throw n
					}))
				} : e)
			}
		}), "function" == typeof ca) {
		var Nu = Ne("Promise").prototype.finally;
		ca.prototype.finally !== Nu && De(ca.prototype, "finally", Nu, {
			unsafe: !0
		})
	}
	var Au = [].slice,
		Ou = /MSIE .\./.test(Ct),
		Lu = function(e) {
			return function(t, n) {
				var o = arguments.length > 2,
					r = o ? Au.call(arguments, 2) : void 0;
				return e(o ? function() {
					("function" == typeof t ? t : Function(t)).apply(this, r)
				} : t, n)
			}
		};
	nt({
		global: !0,
		bind: !0,
		forced: Ou
	}, {
		setTimeout: Lu(N.setTimeout),
		setInterval: Lu(N.setInterval)
	});
	var Ru = Kt.filter,
		wu = Yn("filter");
	nt({
		target: "Array",
		proto: !0,
		forced: !wu
	}, {
		filter: function(e) {
			return Ru(this, e, arguments.length > 1 ? arguments[1] : void 0)
		}
	});
	var bu, Pu = "sign",
		Gu = "message",
		Uu = "user",
		Fu = "c2c",
		qu = "group",
		xu = "sns",
		Vu = "groupMember",
		Ku = "conversation",
		Bu = "context",
		ju = "storage",
		Hu = "eventStat",
		$u = "netMonitor",
		Yu = "bigDataChannel",
		zu = "upload",
		Wu = "plugin",
		Ju = "syncUnreadMessage",
		Xu = "session",
		Qu = "channel",
		Zu = "message_loss_detection",
		el = "cloudControl",
		tl = "pullGroupMessage",
		nl = "qualityStat",
		ol = function() {
			function e(t) {
				o(this, e), this._moduleManager = t, this._className = ""
			}
			return a(e, [{
				key: "isLoggedIn",
				value: function() {
					return this._moduleManager.getModule(Bu).isLoggedIn()
				}
			}, {
				key: "isOversea",
				value: function() {
					return this._moduleManager.getModule(Bu).isOversea()
				}
			}, {
				key: "getMyUserID",
				value: function() {
					return this._moduleManager.getModule(Bu).getUserID()
				}
			}, {
				key: "getModule",
				value: function(e) {
					return this._moduleManager.getModule(e)
				}
			}, {
				key: "getPlatform",
				value: function() {
					return ni
				}
			}, {
				key: "getNetworkType",
				value: function() {
					return this._moduleManager.getModule($u).getNetworkType()
				}
			}, {
				key: "probeNetwork",
				value: function() {
					return this._moduleManager.getModule($u).probe()
				}
			}, {
				key: "getCloudConfig",
				value: function(e) {
					return this._moduleManager.getModule(el).getCloudConfig(e)
				}
			}, {
				key: "emitOuterEvent",
				value: function(e, t) {
					this._moduleManager.getOuterEmitterInstance().emit(e, t)
				}
			}, {
				key: "emitInnerEvent",
				value: function(e, t) {
					this._moduleManager.getInnerEmitterInstance().emit(e, t)
				}
			}, {
				key: "getInnerEmitterInstance",
				value: function() {
					return this._moduleManager.getInnerEmitterInstance()
				}
			}, {
				key: "generateTjgID",
				value: function(e) {
					return this._moduleManager.getModule(Bu).getTinyID() + "-" + e.random
				}
			}, {
				key: "filterModifiedMessage",
				value: function(e) {
					if (!Tc(e)) {
						var t = e.filter((function(e) {
							return !0 === e.isModified
						}));
						t.length > 0 && this.emitOuterEvent(Qn.MESSAGE_MODIFIED, t)
					}
				}
			}, {
				key: "filterUnmodifiedMessage",
				value: function(e) {
					return Tc(e) ? [] : e.filter((function(e) {
						return !1 === e.isModified
					}))
				}
			}, {
				key: "request",
				value: function(e) {
					return this._moduleManager.getModule(Xu).request(e)
				}
			}]), e
		}(),
		rl = "wslogin",
		al = "wslogout",
		sl = "wshello",
		il = "getmsg",
		cl = "authkey",
		ul = "sendmsg",
		ll = "send_group_msg",
		dl = "portrait_get_all",
		pl = "portrait_set",
		gl = "black_list_get",
		hl = "black_list_add",
		fl = "black_list_delete",
		_l = "msgwithdraw",
		ml = "msgreaded",
		vl = "getroammsg",
		Ml = "get_peer_read_time",
		yl = "delete_c2c_msg_ramble",
		Il = "page_get",
		Sl = "get",
		Tl = "delete",
		El = "deletemsg",
		Dl = "get_joined_group_list",
		kl = "get_group_info",
		Cl = "create_group",
		Nl = "destroy_group",
		Al = "modify_group_base_info",
		Ol = "apply_join_group",
		Ll = "apply_join_group_noauth",
		Rl = "quit_group",
		wl = "get_group_public_info",
		bl = "change_group_owner",
		Pl = "handle_apply_join_group",
		Gl = "handle_invite_join_group",
		Ul = "group_msg_recall",
		Fl = "msg_read_report",
		ql = "group_msg_get",
		xl = "get_pendency",
		Vl = "deletemsg",
		Kl = "get_msg",
		Bl = "get_msg_noauth",
		jl = "get_online_member_num",
		Hl = "delete_group_ramble_msg_by_seq",
		$l = "get_group_member_info",
		Yl = "get_specified_group_member_info",
		zl = "add_group_member",
		Wl = "delete_group_member",
		Jl = "modify_group_member_info",
		Xl = "cos",
		Ql = "pre_sig",
		Zl = "tim_web_report_v2",
		ed = "alive",
		td = "msg_push",
		nd = "ws_msg_push_ack",
		od = "stat_forceoffline",
		rd = "save_relay_json_msg",
		ad = "get_relay_json_msg",
		sd = "fetch_config",
		id = "push_configv2",
		cd = {
			NO_SDKAPPID: 2e3,
			NO_ACCOUNT_TYPE: 2001,
			NO_IDENTIFIER: 2002,
			NO_USERSIG: 2003,
			NO_TINYID: 2022,
			NO_A2KEY: 2023,
			USER_NOT_LOGGED_IN: 2024,
			REPEAT_LOGIN: 2025,
			COS_UNDETECTED: 2040,
			COS_GET_SIG_FAIL: 2041,
			MESSAGE_SEND_FAIL: 2100,
			MESSAGE_LIST_CONSTRUCTOR_NEED_OPTIONS: 2103,
			MESSAGE_SEND_NEED_MESSAGE_INSTANCE: 2105,
			MESSAGE_SEND_INVALID_CONVERSATION_TYPE: 2106,
			MESSAGE_FILE_IS_EMPTY: 2108,
			MESSAGE_ONPROGRESS_FUNCTION_ERROR: 2109,
			MESSAGE_REVOKE_FAIL: 2110,
			MESSAGE_DELETE_FAIL: 2111,
			MESSAGE_IMAGE_SELECT_FILE_FIRST: 2251,
			MESSAGE_IMAGE_TYPES_LIMIT: 2252,
			MESSAGE_IMAGE_SIZE_LIMIT: 2253,
			MESSAGE_AUDIO_UPLOAD_FAIL: 2300,
			MESSAGE_AUDIO_SIZE_LIMIT: 2301,
			MESSAGE_VIDEO_UPLOAD_FAIL: 2350,
			MESSAGE_VIDEO_SIZE_LIMIT: 2351,
			MESSAGE_VIDEO_TYPES_LIMIT: 2352,
			MESSAGE_FILE_UPLOAD_FAIL: 2400,
			MESSAGE_FILE_SELECT_FILE_FIRST: 2401,
			MESSAGE_FILE_SIZE_LIMIT: 2402,
			MESSAGE_FILE_URL_IS_EMPTY: 2403,
			MESSAGE_MERGER_TYPE_INVALID: 2450,
			MESSAGE_MERGER_KEY_INVALID: 2451,
			MESSAGE_MERGER_DOWNLOAD_FAIL: 2452,
			MESSAGE_FORWARD_TYPE_INVALID: 2453,
			CONVERSATION_NOT_FOUND: 2500,
			USER_OR_GROUP_NOT_FOUND: 2501,
			CONVERSATION_UN_RECORDED_TYPE: 2502,
			ILLEGAL_GROUP_TYPE: 2600,
			CANNOT_JOIN_WORK: 2601,
			CANNOT_CHANGE_OWNER_IN_AVCHATROOM: 2620,
			CANNOT_CHANGE_OWNER_TO_SELF: 2621,
			CANNOT_DISMISS_Work: 2622,
			MEMBER_NOT_IN_GROUP: 2623,
			JOIN_GROUP_FAIL: 2660,
			CANNOT_ADD_MEMBER_IN_AVCHATROOM: 2661,
			CANNOT_JOIN_NON_AVCHATROOM_WITHOUT_LOGIN: 2662,
			CANNOT_KICK_MEMBER_IN_AVCHATROOM: 2680,
			NOT_OWNER: 2681,
			CANNOT_SET_MEMBER_ROLE_IN_WORK_AND_AVCHATROOM: 2682,
			INVALID_MEMBER_ROLE: 2683,
			CANNOT_SET_SELF_MEMBER_ROLE: 2684,
			CANNOT_MUTE_SELF: 2685,
			NOT_MY_FRIEND: 2700,
			ALREADY_MY_FRIEND: 2701,
			FRIEND_GROUP_EXISTED: 2710,
			FRIEND_GROUP_NOT_EXIST: 2711,
			FRIEND_APPLICATION_NOT_EXIST: 2716,
			UPDATE_PROFILE_INVALID_PARAM: 2721,
			UPDATE_PROFILE_NO_KEY: 2722,
			ADD_BLACKLIST_INVALID_PARAM: 2740,
			DEL_BLACKLIST_INVALID_PARAM: 2741,
			CANNOT_ADD_SELF_TO_BLACKLIST: 2742,
			ADD_FRIEND_INVALID_PARAM: 2760,
			NETWORK_ERROR: 2800,
			NETWORK_TIMEOUT: 2801,
			NETWORK_BASE_OPTIONS_NO_URL: 2802,
			NETWORK_UNDEFINED_SERVER_NAME: 2803,
			NETWORK_PACKAGE_UNDEFINED: 2804,
			NO_NETWORK: 2805,
			CONVERTOR_IRREGULAR_PARAMS: 2900,
			NOTICE_RUNLOOP_UNEXPECTED_CONDITION: 2901,
			NOTICE_RUNLOOP_OFFSET_LOST: 2902,
			UNCAUGHT_ERROR: 2903,
			GET_LONGPOLL_ID_FAILED: 2904,
			INVALID_OPERATION: 2905,
			CANNOT_FIND_PROTOCOL: 2997,
			CANNOT_FIND_MODULE: 2998,
			SDK_IS_NOT_READY: 2999,
			LONG_POLL_KICK_OUT: 91101,
			MESSAGE_A2KEY_EXPIRED: 20002,
			ACCOUNT_A2KEY_EXPIRED: 70001,
			LONG_POLL_API_PARAM_ERROR: 90001,
			HELLO_ANSWER_KICKED_OUT: 1002
		},
		ud = "无 SDKAppID",
		ld = "无 userID",
		dd = "无 userSig",
		pd = "无 tinyID",
		gd = "无 a2key",
		hd = "用户未登录",
		fd = "重复登录",
		_d = "未检测到 COS 上传插件",
		md = "获取 COS 预签名 URL 失败",
		vd = "消息发送失败",
		Md = "需要 Message 的实例",
		yd = 'Message.conversationType 只能为 "C2C" 或 "GROUP"',
		Id = "无法发送空文件",
		Sd = "回调函数运行时遇到错误，请检查接入侧代码",
		Td = "消息撤回失败",
		Ed = "消息删除失败",
		Dd = "请先选择一个图片",
		kd = "只允许上传 jpg png jpeg gif bmp格式的图片",
		Cd = "图片大小超过20M，无法发送",
		Nd = "语音上传失败",
		Ad = "语音大小大于20M，无法发送",
		Od = "视频上传失败",
		Ld = "视频大小超过100M，无法发送",
		Rd = "只允许上传 mp4 格式的视频",
		wd = "文件上传失败",
		bd = "请先选择一个文件",
		Pd = "文件大小超过100M，无法发送 ",
		Gd = "缺少必要的参数文件 URL",
		Ud = "非合并消息",
		Fd = "合并消息的 messageKey 无效",
		qd = "下载合并消息失败",
		xd = "选择的消息类型（如群提示消息）不可以转发",
		Vd = "没有找到相应的会话，请检查传入参数",
		Kd = "没有找到相应的用户或群组，请检查传入参数",
		Bd = "未记录的会话类型",
		jd = "非法的群类型，请检查传入参数",
		Hd = "不能加入 Work 类型的群组",
		$d = "AVChatRoom 类型的群组不能转让群主",
		Yd = "不能把群主转让给自己",
		zd = "不能解散 Work 类型的群组",
		Wd = "用户不在该群组内",
		Jd = "加群失败，请检查传入参数或重试",
		Xd = "AVChatRoom 类型的群不支持邀请群成员",
		Qd = "非 AVChatRoom 类型的群组不允许匿名加群，请先登录后再加群",
		Zd = "不能在 AVChatRoom 类型的群组踢人",
		ep = "你不是群主，只有群主才有权限操作",
		tp = "不能在 Work / AVChatRoom 类型的群中设置群成员身份",
		np = "不合法的群成员身份，请检查传入参数",
		op = "不能设置自己的群成员身份，请检查传入参数",
		rp = "不能将自己禁言，请检查传入参数",
		ap = "传入 updateMyProfile 接口的参数无效",
		sp = "updateMyProfile 无标配资料字段或自定义资料字段",
		ip = "传入 addToBlacklist 接口的参数无效",
		cp = "传入 removeFromBlacklist 接口的参数无效",
		up = "不能拉黑自己",
		lp = "网络错误",
		dp = "请求超时",
		pp = "未连接到网络",
		gp = "无效操作，如调用了未定义或者未实现的方法等",
		hp = "无法找到协议",
		fp = "无法找到模块",
		_p = "接口需要 SDK 处于 ready 状态后才能调用",
		mp = "upload",
		vp = "networkRTT",
		Mp = "messageE2EDelay",
		yp = "sendMessageC2C",
		Ip = "sendMessageGroup",
		Sp = "sendMessageGroupAV",
		Tp = "sendMessageRichMedia",
		Ep = "cosUpload",
		Dp = "messageReceivedGroup",
		kp = "messageReceivedGroupAVPush",
		Cp = "messageReceivedGroupAVPull",
		Np = (s(bu = {}, vp, 2), s(bu, Mp, 3), s(bu, yp, 4), s(bu, Ip, 5), s(bu, Sp, 6), s(bu, Tp, 7), s(bu, Dp,
			8), s(bu, kp, 9), s(bu, Cp, 10), s(bu, Ep, 11), bu),
		Ap = {
			info: 4,
			warning: 5,
			error: 6
		},
		Op = {
			wifi: 1,
			"2g": 2,
			"3g": 3,
			"4g": 4,
			"5g": 5,
			unknown: 6,
			none: 7,
			online: 8
		},
		Lp = function() {
			function e(t) {
				o(this, e), this.eventType = 0, this.timestamp = 0, this.networkType = 8, this.code = 0, this
					.message = "", this.moreMessage = "", this.extension = t, this.costTime = 0, this
					.duplicate = !1, this.level = 4, this._sentFlag = !1, this._startts = Li()
			}
			return a(e, [{
				key: "updateTimeStamp",
				value: function() {
					this.timestamp = Li()
				}
			}, {
				key: "start",
				value: function(e) {
					return this._startts = e, this
				}
			}, {
				key: "end",
				value: function() {
					var e = this,
						t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
					if (!this._sentFlag) {
						var n = Li();
						this.costTime = n - this._startts, this.setMoreMessage("host:".concat(
							fc(), " startts:").concat(this._startts, " endts:").concat(
							n)), t ? (this._sentFlag = !0, this._eventStatModule && this
							._eventStatModule.pushIn(this)) : setTimeout((function() {
							e._sentFlag = !0, e._eventStatModule && e
								._eventStatModule.pushIn(e)
						}), 0)
					}
				}
			}, {
				key: "setError",
				value: function(e, t, n) {
					return e instanceof Error ? (this._sentFlag || (this.setNetworkType(n), t ?
						(e.code && this.setCode(e.code), e.message && this
							.setMoreMessage(e.message)) : (this.setCode(cd.NO_NETWORK),
							this.setMoreMessage(pp)), this.setLevel("error")), this) : (Gi
						.warn(
							"SSOLogData.setError value not instanceof Error, please check!"
							), this)
				}
			}, {
				key: "setCode",
				value: function(e) {
					return ji(e) || this._sentFlag || ("ECONNABORTED" === e && (this.code =
						103), qi(e) ? this.code = e : Gi.warn(
							"SSOLogData.setCode value not a number, please check!", e, n(e))
						), this
				}
			}, {
				key: "setMessage",
				value: function(e) {
					return ji(e) || this._sentFlag || (qi(e) && (this.message = e.toString()),
						xi(e) && (this.message = e)), this
				}
			}, {
				key: "setLevel",
				value: function(e) {
					return ji(e) || this._sentFlag || (this.level = Ap[e]), this
				}
			}, {
				key: "setMoreMessage",
				value: function(e) {
					return Tc(this.moreMessage) ? this.moreMessage = "".concat(e) : this
						.moreMessage += " ".concat(e), this
				}
			}, {
				key: "setNetworkType",
				value: function(e) {
					return ji(e) || ji(Op[e]) ? Gi.warn(
							"SSOLogData.setNetworkType value is undefined, please check!") :
						this.networkType = Op[e], this
				}
			}, {
				key: "getStartTs",
				value: function() {
					return this._startts
				}
			}], [{
				key: "bindEventStatModule",
				value: function(t) {
					e.prototype._eventStatModule = t
				}
			}]), e
		}(),
		Rp = "sdkConstruct",
		wp = "sdkReady",
		bp = "login",
		Pp = "logout",
		Gp = "kickedOut",
		Up = "registerPlugin",
		Fp = "wsConnect",
		qp = "wsOnOpen",
		xp = "wsOnClose",
		Vp = "wsOnError",
		Kp = "getCosAuthKey",
		Bp = "getCosPreSigUrl",
		jp = "upload",
		Hp = "sendMessage",
		$p = "getC2CRoamingMessages",
		Yp = "getGroupRoamingMessages",
		zp = "revokeMessage",
		Wp = "deleteMessage",
		Jp = "setC2CMessageRead",
		Xp = "setGroupMessageRead",
		Qp = "emptyMessageBody",
		Zp = "getPeerReadTime",
		eg = "uploadMergerMessage",
		tg = "downloadMergerMessage",
		ng = "jsonParseError",
		og = "messageE2EDelayException",
		rg = "getConversationList",
		ag = "getConversationProfile",
		sg = "deleteConversation",
		ig = "getConversationListInStorage",
		cg = "syncConversationList",
		ug = "createGroup",
		lg = "applyJoinGroup",
		dg = "quitGroup",
		pg = "searchGroupByID",
		gg = "changeGroupOwner",
		hg = "handleGroupApplication",
		fg = "handleGroupInvitation",
		_g = "setMessageRemindType",
		mg = "dismissGroup",
		vg = "updateGroupProfile",
		Mg = "getGroupList",
		yg = "getGroupProfile",
		Ig = "getGroupListInStorage",
		Sg = "getGroupLastSequence",
		Tg = "getGroupMissingMessage",
		Eg = "pagingGetGroupList",
		Dg = "getGroupSimplifiedInfo",
		kg = "joinWithoutAuth",
		Cg = "getGroupMemberList",
		Ng = "getGroupMemberProfile",
		Ag = "addGroupMember",
		Og = "deleteGroupMember",
		Lg = "setGroupMemberMuteTime",
		Rg = "setGroupMemberNameCard",
		wg = "setGroupMemberRole",
		bg = "setGroupMemberCustomField",
		Pg = "getGroupOnlineMemberCount",
		Gg = "longPollingAVError",
		Ug = "messageLoss",
		Fg = "messageStacked",
		qg = "getUserProfile",
		xg = "updateMyProfile",
		Vg = "getBlacklist",
		Kg = "addToBlacklist",
		Bg = "removeFromBlacklist",
		jg = "callbackFunctionError",
		Hg = "fetchCloudControlConfig",
		$g = "pushedCloudControlConfig",
		Yg = "error",
		zg = w.f,
		Wg = function(e) {
			return function(t) {
				for (var n, o = x(t), r = ht(o), a = r.length, s = 0, i = []; a > s;) n = r[s++], O && !zg
					.call(o, n) || i.push(e ? [n, o[n]] : o[n]);
				return i
			}
		},
		Jg = {
			entries: Wg(!0),
			values: Wg(!1)
		}.values;
	nt({
		target: "Object",
		stat: !0
	}, {
		values: function(e) {
			return Jg(e)
		}
	});
	var Xg = function() {
			function e(t) {
				o(this, e), this.type = Zn.MSG_TEXT, this.content = {
					text: t.text || ""
				}
			}
			return a(e, [{
				key: "setText",
				value: function(e) {
					this.content.text = e
				}
			}, {
				key: "sendable",
				value: function() {
					return 0 !== this.content.text.length
				}
			}]), e
		}(),
		Qg = Ut("iterator"),
		Zg = !A((function() {
			var e = new URL("b?a=1&b=2&c=3", "http://a"),
				t = e.searchParams,
				n = "";
			return e.pathname = "c%20d", t.forEach((function(e, o) {
					t.delete("b"), n += o + e
				})), !t.sort || "http://a/c%20d?a=1&c=3" !== e.href || "3" !== t.get("c") || "a=1" !==
				String(new URLSearchParams("?a=1")) || !t[Qg] || "a" !== new URL("https://a@b")
				.username || "b" !== new URLSearchParams(new URLSearchParams("a=b")).get("a") ||
				"xn--e1aybc" !== new URL("http://тест").host || "#%D0%B1" !== new URL("http://a#б")
				.hash || "a1c3" !== n || "x" !== new URL("http://x", void 0).host
		})),
		eh = Object.assign,
		th = Object.defineProperty,
		nh = !eh || A((function() {
			if (O && 1 !== eh({
					b: 1
				}, eh(th({}, "a", {
					enumerable: !0,
					get: function() {
						th(this, "b", {
							value: 3,
							enumerable: !1
						})
					}
				}), {
					b: 2
				})).b) return !0;
			var e = {},
				t = {},
				n = Symbol();
			return e[n] = 7, "abcdefghijklmnopqrst".split("").forEach((function(e) {
				t[e] = e
			})), 7 != eh({}, e)[n] || "abcdefghijklmnopqrst" != ht(eh({}, t)).join("")
		})) ? function(e, t) {
			for (var n = B(e), o = arguments.length, r = 1, a = je.f, s = w.f; o > r;)
				for (var i, c = F(arguments[r++]), u = a ? ht(c).concat(a(c)) : ht(c), l = u.length, d = 0; l >
					d;) i = u[d++], O && !s.call(c, i) || (n[i] = c[i]);
			return n
		} : eh,
		oh = /[^\0-\u007E]/,
		rh = /[.\u3002\uFF0E\uFF61]/g,
		ah = "Overflow: input needs wider integers to process",
		sh = Math.floor,
		ih = String.fromCharCode,
		ch = function(e) {
			return e + 22 + 75 * (e < 26)
		},
		uh = function(e, t, n) {
			var o = 0;
			for (e = n ? sh(e / 700) : e >> 1, e += sh(e / t); e > 455; o += 36) e = sh(e / 35);
			return sh(o + 36 * e / (e + 38))
		},
		lh = function(e) {
			var t, n, o = [],
				r = (e = function(e) {
					for (var t = [], n = 0, o = e.length; n < o;) {
						var r = e.charCodeAt(n++);
						if (r >= 55296 && r <= 56319 && n < o) {
							var a = e.charCodeAt(n++);
							56320 == (64512 & a) ? t.push(((1023 & r) << 10) + (1023 & a) + 65536) : (t
								.push(r), n--)
						} else t.push(r)
					}
					return t
				}(e)).length,
				a = 128,
				s = 0,
				i = 72;
			for (t = 0; t < e.length; t++)(n = e[t]) < 128 && o.push(ih(n));
			var c = o.length,
				u = c;
			for (c && o.push("-"); u < r;) {
				var l = 2147483647;
				for (t = 0; t < e.length; t++)(n = e[t]) >= a && n < l && (l = n);
				var d = u + 1;
				if (l - a > sh((2147483647 - s) / d)) throw RangeError(ah);
				for (s += (l - a) * d, a = l, t = 0; t < e.length; t++) {
					if ((n = e[t]) < a && ++s > 2147483647) throw RangeError(ah);
					if (n == a) {
						for (var p = s, g = 36;; g += 36) {
							var h = g <= i ? 1 : g >= i + 26 ? 26 : g - i;
							if (p < h) break;
							var f = p - h,
								_ = 36 - h;
							o.push(ih(ch(h + f % _))), p = sh(f / _)
						}
						o.push(ih(ch(p))), i = uh(s, d, u == c), s = 0, ++u
					}
				}++s, ++a
			}
			return o.join("")
		},
		dh = function(e) {
			var t = dn(e);
			if ("function" != typeof t) throw TypeError(String(e) + " is not iterable");
			return Q(t.call(e))
		},
		ph = Ne("fetch"),
		gh = Ne("Headers"),
		hh = Ut("iterator"),
		fh = Ee.set,
		_h = Ee.getterFor("URLSearchParams"),
		mh = Ee.getterFor("URLSearchParamsIterator"),
		vh = /\+/g,
		Mh = Array(4),
		yh = function(e) {
			return Mh[e - 1] || (Mh[e - 1] = RegExp("((?:%[\\da-f]{2}){" + e + "})", "gi"))
		},
		Ih = function(e) {
			try {
				return decodeURIComponent(e)
			} catch (Hv) {
				return e
			}
		},
		Sh = function(e) {
			var t = e.replace(vh, " "),
				n = 4;
			try {
				return decodeURIComponent(t)
			} catch (Hv) {
				for (; n;) t = t.replace(yh(n--), Ih);
				return t
			}
		},
		Th = /[!'()~]|%20/g,
		Eh = {
			"!": "%21",
			"'": "%27",
			"(": "%28",
			")": "%29",
			"~": "%7E",
			"%20": "+"
		},
		Dh = function(e) {
			return Eh[e]
		},
		kh = function(e) {
			return encodeURIComponent(e).replace(Th, Dh)
		},
		Ch = function(e, t) {
			if (t)
				for (var n, o, r = t.split("&"), a = 0; a < r.length;)(n = r[a++]).length && (o = n.split("="),
					e.push({
						key: Sh(o.shift()),
						value: Sh(o.join("="))
					}))
		},
		Nh = function(e) {
			this.entries.length = 0, Ch(this.entries, e)
		},
		Ah = function(e, t) {
			if (e < t) throw TypeError("Not enough arguments")
		},
		Oh = Gn((function(e, t) {
			fh(this, {
				type: "URLSearchParamsIterator",
				iterator: dh(_h(e).entries),
				kind: t
			})
		}), "Iterator", (function() {
			var e = mh(this),
				t = e.kind,
				n = e.iterator.next(),
				o = n.value;
			return n.done || (n.value = "keys" === t ? o.key : "values" === t ? o.value : [o.key, o
				.value
			]), n
		})),
		Lh = function() {
			pa(this, Lh, "URLSearchParams");
			var e, t, n, o, r, a, s, i, c, u = arguments.length > 0 ? arguments[0] : void 0,
				l = this,
				d = [];
			if (fh(l, {
					type: "URLSearchParams",
					entries: d,
					updateURL: function() {},
					updateSearchParams: Nh
				}), void 0 !== u)
				if (V(u))
					if ("function" == typeof(e = dn(u)))
						for (n = (t = e.call(u)).next; !(o = n.call(t)).done;) {
							if ((s = (a = (r = dh(Q(o.value))).next).call(r)).done || (i = a.call(r)).done || !a
								.call(r).done) throw TypeError("Expected sequence with length 2");
							d.push({
								key: s.value + "",
								value: i.value + ""
							})
						} else
							for (c in u) H(u, c) && d.push({
								key: c,
								value: u[c] + ""
							});
					else Ch(d, "string" == typeof u ? "?" === u.charAt(0) ? u.slice(1) : u : u + "")
		},
		Rh = Lh.prototype;
	ua(Rh, {
		append: function(e, t) {
			Ah(arguments.length, 2);
			var n = _h(this);
			n.entries.push({
				key: e + "",
				value: t + ""
			}), n.updateURL()
		},
		delete: function(e) {
			Ah(arguments.length, 1);
			for (var t = _h(this), n = t.entries, o = e + "", r = 0; r < n.length;) n[r].key === o ?
				n.splice(r, 1) : r++;
			t.updateURL()
		},
		get: function(e) {
			Ah(arguments.length, 1);
			for (var t = _h(this).entries, n = e + "", o = 0; o < t.length; o++)
				if (t[o].key === n) return t[o].value;
			return null
		},
		getAll: function(e) {
			Ah(arguments.length, 1);
			for (var t = _h(this).entries, n = e + "", o = [], r = 0; r < t.length; r++) t[r]
				.key === n && o.push(t[r].value);
			return o
		},
		has: function(e) {
			Ah(arguments.length, 1);
			for (var t = _h(this).entries, n = e + "", o = 0; o < t.length;)
				if (t[o++].key === n) return !0;
			return !1
		},
		set: function(e, t) {
			Ah(arguments.length, 1);
			for (var n, o = _h(this), r = o.entries, a = !1, s = e + "", i = t + "", c = 0; c < r
				.length; c++)(n = r[c]).key === s && (a ? r.splice(c--, 1) : (a = !0, n.value = i));
			a || r.push({
				key: s,
				value: i
			}), o.updateURL()
		},
		sort: function() {
			var e, t, n, o = _h(this),
				r = o.entries,
				a = r.slice();
			for (r.length = 0, n = 0; n < a.length; n++) {
				for (e = a[n], t = 0; t < n; t++)
					if (r[t].key > e.key) {
						r.splice(t, 0, e);
						break
					} t === n && r.push(e)
			}
			o.updateURL()
		},
		forEach: function(e) {
			for (var t, n = _h(this).entries, o = Dt(e, arguments.length > 1 ? arguments[1] :
					void 0, 3), r = 0; r < n.length;) o((t = n[r++]).value, t.key, this)
		},
		keys: function() {
			return new Oh(this, "keys")
		},
		values: function() {
			return new Oh(this, "values")
		},
		entries: function() {
			return new Oh(this, "entries")
		}
	}, {
		enumerable: !0
	}), De(Rh, hh, Rh.entries), De(Rh, "toString", (function() {
		for (var e, t = _h(this).entries, n = [], o = 0; o < t.length;) e = t[o++], n.push(kh(e
			.key) + "=" + kh(e.value));
		return n.join("&")
	}), {
		enumerable: !0
	}), wn(Lh, "URLSearchParams"), nt({
		global: !0,
		forced: !Zg
	}, {
		URLSearchParams: Lh
	}), Zg || "function" != typeof ph || "function" != typeof gh || nt({
		global: !0,
		enumerable: !0,
		forced: !0
	}, {
		fetch: function(e) {
			var t, n, o, r = [e];
			return arguments.length > 1 && (V(t = arguments[1]) && (n = t.body,
				"URLSearchParams" === un(n) && ((o = t.headers ? new gh(t.headers) : new gh)
					.has("content-type") || o.set("content-type",
						"application/x-www-form-urlencoded;charset=UTF-8"), t = It(t, {
						body: b(0, String(n)),
						headers: b(0, o)
					}))), r.push(t)), ph.apply(this, r)
		}
	});
	var wh, bh = {
			URLSearchParams: Lh,
			getState: _h
		},
		Ph = Tn.codeAt,
		Gh = N.URL,
		Uh = bh.URLSearchParams,
		Fh = bh.getState,
		qh = Ee.set,
		xh = Ee.getterFor("URL"),
		Vh = Math.floor,
		Kh = Math.pow,
		Bh = /[A-Za-z]/,
		jh = /[\d+-.A-Za-z]/,
		Hh = /\d/,
		$h = /^0x/i,
		Yh = /^[0-7]+$/,
		zh = /^\d+$/,
		Wh = /^[\dA-Fa-f]+$/,
		Jh = /[\0\t\n\r #%/:<>?@[\\\]^|]/,
		Xh = /[\0\t\n\r #/:<>?@[\\\]^|]/,
		Qh = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,
		Zh = /[\t\n\r]/g,
		ef = function(e, t) {
			var n, o, r;
			if ("[" == t.charAt(0)) {
				if ("]" != t.charAt(t.length - 1)) return "Invalid host";
				if (!(n = nf(t.slice(1, -1)))) return "Invalid host";
				e.host = n
			} else if (df(e)) {
				if (t = function(e) {
						var t, n, o = [],
							r = e.toLowerCase().replace(rh, ".").split(".");
						for (t = 0; t < r.length; t++) n = r[t], o.push(oh.test(n) ? "xn--" + lh(n) : n);
						return o.join(".")
					}(t), Jh.test(t)) return "Invalid host";
				if (null === (n = tf(t))) return "Invalid host";
				e.host = n
			} else {
				if (Xh.test(t)) return "Invalid host";
				for (n = "", o = pn(t), r = 0; r < o.length; r++) n += uf(o[r], rf);
				e.host = n
			}
		},
		tf = function(e) {
			var t, n, o, r, a, s, i, c = e.split(".");
			if (c.length && "" == c[c.length - 1] && c.pop(), (t = c.length) > 4) return e;
			for (n = [], o = 0; o < t; o++) {
				if ("" == (r = c[o])) return e;
				if (a = 10, r.length > 1 && "0" == r.charAt(0) && (a = $h.test(r) ? 16 : 8, r = r.slice(8 == a ?
						1 : 2)), "" === r) s = 0;
				else {
					if (!(10 == a ? zh : 8 == a ? Yh : Wh).test(r)) return e;
					s = parseInt(r, a)
				}
				n.push(s)
			}
			for (o = 0; o < t; o++)
				if (s = n[o], o == t - 1) {
					if (s >= Kh(256, 5 - t)) return null
				} else if (s > 255) return null;
			for (i = n.pop(), o = 0; o < n.length; o++) i += n[o] * Kh(256, 3 - o);
			return i
		},
		nf = function(e) {
			var t, n, o, r, a, s, i, c = [0, 0, 0, 0, 0, 0, 0, 0],
				u = 0,
				l = null,
				d = 0,
				p = function() {
					return e.charAt(d)
				};
			if (":" == p()) {
				if (":" != e.charAt(1)) return;
				d += 2, l = ++u
			}
			for (; p();) {
				if (8 == u) return;
				if (":" != p()) {
					for (t = n = 0; n < 4 && Wh.test(p());) t = 16 * t + parseInt(p(), 16), d++, n++;
					if ("." == p()) {
						if (0 == n) return;
						if (d -= n, u > 6) return;
						for (o = 0; p();) {
							if (r = null, o > 0) {
								if (!("." == p() && o < 4)) return;
								d++
							}
							if (!Hh.test(p())) return;
							for (; Hh.test(p());) {
								if (a = parseInt(p(), 10), null === r) r = a;
								else {
									if (0 == r) return;
									r = 10 * r + a
								}
								if (r > 255) return;
								d++
							}
							c[u] = 256 * c[u] + r, 2 != ++o && 4 != o || u++
						}
						if (4 != o) return;
						break
					}
					if (":" == p()) {
						if (d++, !p()) return
					} else if (p()) return;
					c[u++] = t
				} else {
					if (null !== l) return;
					d++, l = ++u
				}
			}
			if (null !== l)
				for (s = u - l, u = 7; 0 != u && s > 0;) i = c[u], c[u--] = c[l + s - 1], c[l + --s] = i;
			else if (8 != u) return;
			return c
		},
		of = function(e) {
			var t, n, o, r;
			if ("number" == typeof e) {
				for (t = [], n = 0; n < 4; n++) t.unshift(e % 256), e = Vh(e / 256);
				return t.join(".")
			}
			if ("object" == typeof e) {
				for (t = "", o = function(e) {
						for (var t = null, n = 1, o = null, r = 0, a = 0; a < 8; a++) 0 !== e[a] ? (r > n && (
							t = o, n = r), o = null, r = 0) : (null === o && (o = a), ++r);
						return r > n && (t = o, n = r), t
					}(e), n = 0; n < 8; n++) r && 0 === e[n] || (r && (r = !1), o === n ? (t += n ? ":" : "::",
					r = !0) : (t += e[n].toString(16), n < 7 && (t += ":")));
				return "[" + t + "]"
			}
			return e
		},
		rf = {},
		af = nh({}, rf, {
			" ": 1,
			'"': 1,
			"<": 1,
			">": 1,
			"`": 1
		}),
		sf = nh({}, af, {
			"#": 1,
			"?": 1,
			"{": 1,
			"}": 1
		}),
		cf = nh({}, sf, {
			"/": 1,
			":": 1,
			";": 1,
			"=": 1,
			"@": 1,
			"[": 1,
			"\\": 1,
			"]": 1,
			"^": 1,
			"|": 1
		}),
		uf = function(e, t) {
			var n = Ph(e, 0);
			return n > 32 && n < 127 && !H(t, e) ? e : encodeURIComponent(e)
		},
		lf = {
			ftp: 21,
			file: null,
			http: 80,
			https: 443,
			ws: 80,
			wss: 443
		},
		df = function(e) {
			return H(lf, e.scheme)
		},
		pf = function(e) {
			return "" != e.username || "" != e.password
		},
		gf = function(e) {
			return !e.host || e.cannotBeABaseURL || "file" == e.scheme
		},
		hf = function(e, t) {
			var n;
			return 2 == e.length && Bh.test(e.charAt(0)) && (":" == (n = e.charAt(1)) || !t && "|" == n)
		},
		ff = function(e) {
			var t;
			return e.length > 1 && hf(e.slice(0, 2)) && (2 == e.length || "/" === (t = e.charAt(2)) || "\\" ===
				t || "?" === t || "#" === t)
		},
		_f = function(e) {
			var t = e.path,
				n = t.length;
			!n || "file" == e.scheme && 1 == n && hf(t[0], !0) || t.pop()
		},
		mf = function(e) {
			return "." === e || "%2e" === e.toLowerCase()
		},
		vf = {},
		Mf = {},
		yf = {},
		If = {},
		Sf = {},
		Tf = {},
		Ef = {},
		Df = {},
		kf = {},
		Cf = {},
		Nf = {},
		Af = {},
		Of = {},
		Lf = {},
		Rf = {},
		wf = {},
		bf = {},
		Pf = {},
		Gf = {},
		Uf = {},
		Ff = {},
		qf = function(e, t, n, o) {
			var r, a, s, i, c, u = n || vf,
				l = 0,
				d = "",
				p = !1,
				g = !1,
				h = !1;
			for (n || (e.scheme = "", e.username = "", e.password = "", e.host = null, e.port = null, e
				.path = [], e.query = null, e.fragment = null, e.cannotBeABaseURL = !1, t = t.replace(Qh,
					"")), t = t.replace(Zh, ""), r = pn(t); l <= r.length;) {
				switch (a = r[l], u) {
					case vf:
						if (!a || !Bh.test(a)) {
							if (n) return "Invalid scheme";
							u = yf;
							continue
						}
						d += a.toLowerCase(), u = Mf;
						break;
					case Mf:
						if (a && (jh.test(a) || "+" == a || "-" == a || "." == a)) d += a.toLowerCase();
						else {
							if (":" != a) {
								if (n) return "Invalid scheme";
								d = "", u = yf, l = 0;
								continue
							}
							if (n && (df(e) != H(lf, d) || "file" == d && (pf(e) || null !== e.port) ||
									"file" == e.scheme && !e.host)) return;
							if (e.scheme = d, n) return void(df(e) && lf[e.scheme] == e.port && (e.port =
							null));
							d = "", "file" == e.scheme ? u = Lf : df(e) && o && o.scheme == e.scheme ? u = If :
								df(e) ? u = Df : "/" == r[l + 1] ? (u = Sf, l++) : (e.cannotBeABaseURL = !0, e
									.path.push(""), u = Gf)
						}
						break;
					case yf:
						if (!o || o.cannotBeABaseURL && "#" != a) return "Invalid scheme";
						if (o.cannotBeABaseURL && "#" == a) {
							e.scheme = o.scheme, e.path = o.path.slice(), e.query = o.query, e.fragment = "", e
								.cannotBeABaseURL = !0, u = Ff;
							break
						}
						u = "file" == o.scheme ? Lf : Tf;
						continue;
					case If:
						if ("/" != a || "/" != r[l + 1]) {
							u = Tf;
							continue
						}
						u = kf, l++;
						break;
					case Sf:
						if ("/" == a) {
							u = Cf;
							break
						}
						u = Pf;
						continue;
					case Tf:
						if (e.scheme = o.scheme, a == wh) e.username = o.username, e.password = o.password, e
							.host = o.host, e.port = o.port, e.path = o.path.slice(), e.query = o.query;
						else if ("/" == a || "\\" == a && df(e)) u = Ef;
						else if ("?" == a) e.username = o.username, e.password = o.password, e.host = o.host, e
							.port = o.port, e.path = o.path.slice(), e.query = "", u = Uf;
						else {
							if ("#" != a) {
								e.username = o.username, e.password = o.password, e.host = o.host, e.port = o
									.port, e.path = o.path.slice(), e.path.pop(), u = Pf;
								continue
							}
							e.username = o.username, e.password = o.password, e.host = o.host, e.port = o.port,
								e.path = o.path.slice(), e.query = o.query, e.fragment = "", u = Ff
						}
						break;
					case Ef:
						if (!df(e) || "/" != a && "\\" != a) {
							if ("/" != a) {
								e.username = o.username, e.password = o.password, e.host = o.host, e.port = o
									.port, u = Pf;
								continue
							}
							u = Cf
						} else u = kf;
						break;
					case Df:
						if (u = kf, "/" != a || "/" != d.charAt(l + 1)) continue;
						l++;
						break;
					case kf:
						if ("/" != a && "\\" != a) {
							u = Cf;
							continue
						}
						break;
					case Cf:
						if ("@" == a) {
							p && (d = "%40" + d), p = !0, s = pn(d);
							for (var f = 0; f < s.length; f++) {
								var _ = s[f];
								if (":" != _ || h) {
									var m = uf(_, cf);
									h ? e.password += m : e.username += m
								} else h = !0
							}
							d = ""
						} else if (a == wh || "/" == a || "?" == a || "#" == a || "\\" == a && df(e)) {
							if (p && "" == d) return "Invalid authority";
							l -= pn(d).length + 1, d = "", u = Nf
						} else d += a;
						break;
					case Nf:
					case Af:
						if (n && "file" == e.scheme) {
							u = wf;
							continue
						}
						if (":" != a || g) {
							if (a == wh || "/" == a || "?" == a || "#" == a || "\\" == a && df(e)) {
								if (df(e) && "" == d) return "Invalid host";
								if (n && "" == d && (pf(e) || null !== e.port)) return;
								if (i = ef(e, d)) return i;
								if (d = "", u = bf, n) return;
								continue
							}
							"[" == a ? g = !0 : "]" == a && (g = !1), d += a
						} else {
							if ("" == d) return "Invalid host";
							if (i = ef(e, d)) return i;
							if (d = "", u = Of, n == Af) return
						}
						break;
					case Of:
						if (!Hh.test(a)) {
							if (a == wh || "/" == a || "?" == a || "#" == a || "\\" == a && df(e) || n) {
								if ("" != d) {
									var v = parseInt(d, 10);
									if (v > 65535) return "Invalid port";
									e.port = df(e) && v === lf[e.scheme] ? null : v, d = ""
								}
								if (n) return;
								u = bf;
								continue
							}
							return "Invalid port"
						}
						d += a;
						break;
					case Lf:
						if (e.scheme = "file", "/" == a || "\\" == a) u = Rf;
						else {
							if (!o || "file" != o.scheme) {
								u = Pf;
								continue
							}
							if (a == wh) e.host = o.host, e.path = o.path.slice(), e.query = o.query;
							else if ("?" == a) e.host = o.host, e.path = o.path.slice(), e.query = "", u = Uf;
							else {
								if ("#" != a) {
									ff(r.slice(l).join("")) || (e.host = o.host, e.path = o.path.slice(), _f(
										e)), u = Pf;
									continue
								}
								e.host = o.host, e.path = o.path.slice(), e.query = o.query, e.fragment = "",
									u = Ff
							}
						}
						break;
					case Rf:
						if ("/" == a || "\\" == a) {
							u = wf;
							break
						}
						o && "file" == o.scheme && !ff(r.slice(l).join("")) && (hf(o.path[0], !0) ? e.path.push(
							o.path[0]) : e.host = o.host), u = Pf;
						continue;
					case wf:
						if (a == wh || "/" == a || "\\" == a || "?" == a || "#" == a) {
							if (!n && hf(d)) u = Pf;
							else if ("" == d) {
								if (e.host = "", n) return;
								u = bf
							} else {
								if (i = ef(e, d)) return i;
								if ("localhost" == e.host && (e.host = ""), n) return;
								d = "", u = bf
							}
							continue
						}
						d += a;
						break;
					case bf:
						if (df(e)) {
							if (u = Pf, "/" != a && "\\" != a) continue
						} else if (n || "?" != a)
							if (n || "#" != a) {
								if (a != wh && (u = Pf, "/" != a)) continue
							} else e.fragment = "", u = Ff;
						else e.query = "", u = Uf;
						break;
					case Pf:
						if (a == wh || "/" == a || "\\" == a && df(e) || !n && ("?" == a || "#" == a)) {
							if (".." === (c = (c = d).toLowerCase()) || "%2e." === c || ".%2e" === c ||
								"%2e%2e" === c ? (_f(e), "/" == a || "\\" == a && df(e) || e.path.push("")) :
								mf(d) ? "/" == a || "\\" == a && df(e) || e.path.push("") : ("file" == e
									.scheme && !e.path.length && hf(d) && (e.host && (e.host = ""), d = d
										.charAt(0) + ":"), e.path.push(d)), d = "", "file" == e.scheme && (a ==
									wh || "?" == a || "#" == a))
								for (; e.path.length > 1 && "" === e.path[0];) e.path.shift();
							"?" == a ? (e.query = "", u = Uf) : "#" == a && (e.fragment = "", u = Ff)
						} else d += uf(a, sf);
						break;
					case Gf:
						"?" == a ? (e.query = "", u = Uf) : "#" == a ? (e.fragment = "", u = Ff) : a != wh && (e
							.path[0] += uf(a, rf));
						break;
					case Uf:
						n || "#" != a ? a != wh && ("'" == a && df(e) ? e.query += "%27" : e.query += "#" == a ?
							"%23" : uf(a, rf)) : (e.fragment = "", u = Ff);
						break;
					case Ff:
						a != wh && (e.fragment += uf(a, af))
				}
				l++
			}
		},
		xf = function(e) {
			var t, n, o = pa(this, xf, "URL"),
				r = arguments.length > 1 ? arguments[1] : void 0,
				a = String(e),
				s = qh(o, {
					type: "URL"
				});
			if (void 0 !== r)
				if (r instanceof xf) t = xh(r);
				else if (n = qf(t = {}, String(r))) throw TypeError(n);
			if (n = qf(s, a, null, t)) throw TypeError(n);
			var i = s.searchParams = new Uh,
				c = Fh(i);
			c.updateSearchParams(s.query), c.updateURL = function() {
				s.query = String(i) || null
			}, O || (o.href = Kf.call(o), o.origin = Bf.call(o), o.protocol = jf.call(o), o.username = Hf
				.call(o), o.password = $f.call(o), o.host = Yf.call(o), o.hostname = zf.call(o), o.port = Wf
				.call(o), o.pathname = Jf.call(o), o.search = Xf.call(o), o.searchParams = Qf.call(o), o
				.hash = Zf.call(o))
		},
		Vf = xf.prototype,
		Kf = function() {
			var e = xh(this),
				t = e.scheme,
				n = e.username,
				o = e.password,
				r = e.host,
				a = e.port,
				s = e.path,
				i = e.query,
				c = e.fragment,
				u = t + ":";
			return null !== r ? (u += "//", pf(e) && (u += n + (o ? ":" + o : "") + "@"), u += of(r), null !==
					a && (u += ":" + a)) : "file" == t && (u += "//"), u += e.cannotBeABaseURL ? s[0] : s
				.length ? "/" + s.join("/") : "", null !== i && (u += "?" + i), null !== c && (u += "#" + c), u
		},
		Bf = function() {
			var e = xh(this),
				t = e.scheme,
				n = e.port;
			if ("blob" == t) try {
				return new xf(t.path[0]).origin
			} catch (Hv) {
				return "null"
			}
			return "file" != t && df(e) ? t + "://" + of(e.host) + (null !== n ? ":" + n : "") : "null"
		},
		jf = function() {
			return xh(this).scheme + ":"
		},
		Hf = function() {
			return xh(this).username
		},
		$f = function() {
			return xh(this).password
		},
		Yf = function() {
			var e = xh(this),
				t = e.host,
				n = e.port;
			return null === t ? "" : null === n ? of(t) : of(t) + ":" + n
		},
		zf = function() {
			var e = xh(this).host;
			return null === e ? "" : of(e)
		},
		Wf = function() {
			var e = xh(this).port;
			return null === e ? "" : String(e)
		},
		Jf = function() {
			var e = xh(this),
				t = e.path;
			return e.cannotBeABaseURL ? t[0] : t.length ? "/" + t.join("/") : ""
		},
		Xf = function() {
			var e = xh(this).query;
			return e ? "?" + e : ""
		},
		Qf = function() {
			return xh(this).searchParams
		},
		Zf = function() {
			var e = xh(this).fragment;
			return e ? "#" + e : ""
		},
		e_ = function(e, t) {
			return {
				get: e,
				set: t,
				configurable: !0,
				enumerable: !0
			}
		};
	if (O && ft(Vf, {
			href: e_(Kf, (function(e) {
				var t = xh(this),
					n = String(e),
					o = qf(t, n);
				if (o) throw TypeError(o);
				Fh(t.searchParams).updateSearchParams(t.query)
			})),
			origin: e_(Bf),
			protocol: e_(jf, (function(e) {
				var t = xh(this);
				qf(t, String(e) + ":", vf)
			})),
			username: e_(Hf, (function(e) {
				var t = xh(this),
					n = pn(String(e));
				if (!gf(t)) {
					t.username = "";
					for (var o = 0; o < n.length; o++) t.username += uf(n[o], cf)
				}
			})),
			password: e_($f, (function(e) {
				var t = xh(this),
					n = pn(String(e));
				if (!gf(t)) {
					t.password = "";
					for (var o = 0; o < n.length; o++) t.password += uf(n[o], cf)
				}
			})),
			host: e_(Yf, (function(e) {
				var t = xh(this);
				t.cannotBeABaseURL || qf(t, String(e), Nf)
			})),
			hostname: e_(zf, (function(e) {
				var t = xh(this);
				t.cannotBeABaseURL || qf(t, String(e), Af)
			})),
			port: e_(Wf, (function(e) {
				var t = xh(this);
				gf(t) || ("" == (e = String(e)) ? t.port = null : qf(t, e, Of))
			})),
			pathname: e_(Jf, (function(e) {
				var t = xh(this);
				t.cannotBeABaseURL || (t.path = [], qf(t, e + "", bf))
			})),
			search: e_(Xf, (function(e) {
				var t = xh(this);
				"" == (e = String(e)) ? t.query = null: ("?" == e.charAt(0) && (e = e.slice(1)),
					t.query = "", qf(t, e, Uf)), Fh(t.searchParams).updateSearchParams(t
					.query)
			})),
			searchParams: e_(Qf),
			hash: e_(Zf, (function(e) {
				var t = xh(this);
				"" != (e = String(e)) ? ("#" == e.charAt(0) && (e = e.slice(1)), t.fragment =
					"", qf(t, e, Ff)) : t.fragment = null
			}))
		}), De(Vf, "toJSON", (function() {
			return Kf.call(this)
		}), {
			enumerable: !0
		}), De(Vf, "toString", (function() {
			return Kf.call(this)
		}), {
			enumerable: !0
		}), Gh) {
		var t_ = Gh.createObjectURL,
			n_ = Gh.revokeObjectURL;
		t_ && De(xf, "createObjectURL", (function(e) {
			return t_.apply(Gh, arguments)
		})), n_ && De(xf, "revokeObjectURL", (function(e) {
			return n_.apply(Gh, arguments)
		}))
	}
	wn(xf, "URL"), nt({
		global: !0,
		forced: !Zg,
		sham: !O
	}, {
		URL: xf
	}), nt({
		target: "Object",
		stat: !0,
		forced: Object.assign !== nh
	}, {
		assign: nh
	});
	var o_ = {
			JSON: {
				TYPE: {
					C2C: {
						NOTICE: 1,
						COMMON: 9,
						EVENT: 10
					},
					GROUP: {
						COMMON: 3,
						TIP: 4,
						SYSTEM: 5,
						TIP2: 6
					},
					FRIEND: {
						NOTICE: 7
					},
					PROFILE: {
						NOTICE: 8
					}
				},
				SUBTYPE: {
					C2C: {
						COMMON: 0,
						READED: 92,
						KICKEDOUT: 96
					},
					GROUP: {
						COMMON: 0,
						LOVEMESSAGE: 1,
						TIP: 2,
						REDPACKET: 3
					}
				},
				OPTIONS: {
					GROUP: {
						JOIN: 1,
						QUIT: 2,
						KICK: 3,
						SET_ADMIN: 4,
						CANCEL_ADMIN: 5,
						MODIFY_GROUP_INFO: 6,
						MODIFY_MEMBER_INFO: 7
					}
				}
			},
			PROTOBUF: {},
			IMAGE_TYPES: {
				ORIGIN: 1,
				LARGE: 2,
				SMALL: 3
			},
			IMAGE_FORMAT: {
				JPG: 1,
				JPEG: 1,
				GIF: 2,
				PNG: 3,
				BMP: 4,
				UNKNOWN: 255
			}
		},
		r_ = {
			NICK: "Tag_Profile_IM_Nick",
			GENDER: "Tag_Profile_IM_Gender",
			BIRTHDAY: "Tag_Profile_IM_BirthDay",
			LOCATION: "Tag_Profile_IM_Location",
			SELFSIGNATURE: "Tag_Profile_IM_SelfSignature",
			ALLOWTYPE: "Tag_Profile_IM_AllowType",
			LANGUAGE: "Tag_Profile_IM_Language",
			AVATAR: "Tag_Profile_IM_Image",
			MESSAGESETTINGS: "Tag_Profile_IM_MsgSettings",
			ADMINFORBIDTYPE: "Tag_Profile_IM_AdminForbidType",
			LEVEL: "Tag_Profile_IM_Level",
			ROLE: "Tag_Profile_IM_Role"
		},
		a_ = {
			UNKNOWN: "Gender_Type_Unknown",
			FEMALE: "Gender_Type_Female",
			MALE: "Gender_Type_Male"
		},
		s_ = {
			NONE: "AdminForbid_Type_None",
			SEND_OUT: "AdminForbid_Type_SendOut"
		},
		i_ = {
			NEED_CONFIRM: "AllowType_Type_NeedConfirm",
			ALLOW_ANY: "AllowType_Type_AllowAny",
			DENY_ANY: "AllowType_Type_DenyAny"
		},
		c_ = "JoinedSuccess",
		u_ = "WaitAdminApproval",
		l_ = function() {
			function e(t) {
				o(this, e), this._imageMemoryURL = "", Zs ? this.createImageDataASURLInWXMiniApp(t.file) : this
					.createImageDataASURLInWeb(t.file), this._initImageInfoModel(), this.type = Zn.MSG_IMAGE,
					this._percent = 0, this.content = {
						imageFormat: t.imageFormat || o_.IMAGE_FORMAT.UNKNOWN,
						uuid: t.uuid,
						imageInfoArray: []
					}, this.initImageInfoArray(t.imageInfoArray), this._defaultImage =
					"http://imgcache.qq.com/open/qcloud/video/act/webim-images/default.jpg", this._autoFixUrl()
			}
			return a(e, [{
				key: "_initImageInfoModel",
				value: function() {
					var e = this;
					this._ImageInfoModel = function(t) {
						this.instanceID = tc(9999999), this.sizeType = t.type || 0, this
							.type = 0, this.size = t.size || 0, this.width = t.width || 0,
							this.height = t.height || 0, this.imageUrl = t.url || "", this
							.url = t.url || e._imageMemoryURL || e._defaultImage
					}, this._ImageInfoModel.prototype = {
						setSizeType: function(e) {
							this.sizeType = e
						},
						setType: function(e) {
							this.type = e
						},
						setImageUrl: function(e) {
							e && (this.imageUrl = e)
						},
						getImageUrl: function() {
							return this.imageUrl
						}
					}
				}
			}, {
				key: "initImageInfoArray",
				value: function(e) {
					for (var t = 0, n = null, o = null; t <= 2;) o = ji(e) || ji(e[t]) ? {
							type: 0,
							size: 0,
							width: 0,
							height: 0,
							url: ""
						} : e[t], (n = new this._ImageInfoModel(o)).setSizeType(t + 1), n
						.setType(t), this.addImageInfo(n), t++;
					this.updateAccessSideImageInfoArray()
				}
			}, {
				key: "updateImageInfoArray",
				value: function(e) {
					for (var t, n = this.content.imageInfoArray.length, o = 0; o < n; o++) t =
						this.content.imageInfoArray[o], e[o].size && (t.size = e[o].size), e[o]
						.url && t.setImageUrl(e[o].url), e[o].width && (t.width = e[o].width),
						e[o].height && (t.height = e[o].height)
				}
			}, {
				key: "_autoFixUrl",
				value: function() {
					for (var e = this.content.imageInfoArray.length, t = "", n = "", o = [
							"http", "https"
						], r = null, a = 0; a < e; a++) this.content.imageInfoArray[a].url &&
						"" !== (r = this.content.imageInfoArray[a]).imageUrl && (n = r.imageUrl
							.slice(0, r.imageUrl.indexOf("://") + 1), t = r.imageUrl.slice(r
								.imageUrl.indexOf("://") + 1), o.indexOf(n) < 0 && (n =
								"https:"), this.content.imageInfoArray[a].setImageUrl([n, t]
								.join("")))
				}
			}, {
				key: "updatePercent",
				value: function(e) {
					this._percent = e, this._percent > 1 && (this._percent = 1)
				}
			}, {
				key: "updateImageFormat",
				value: function(e) {
					this.content.imageFormat = o_.IMAGE_FORMAT[e.toUpperCase()] || o_
						.IMAGE_FORMAT.UNKNOWN
				}
			}, {
				key: "createImageDataASURLInWeb",
				value: function(e) {
					void 0 !== e && e.files.length > 0 && (this._imageMemoryURL = window.URL
						.createObjectURL(e.files[0]))
				}
			}, {
				key: "createImageDataASURLInWXMiniApp",
				value: function(e) {
					e && e.url && (this._imageMemoryURL = e.url)
				}
			}, {
				key: "replaceImageInfo",
				value: function(e, t) {
					this.content.imageInfoArray[t] instanceof this._ImageInfoModel || (this
						.content.imageInfoArray[t] = e)
				}
			}, {
				key: "addImageInfo",
				value: function(e) {
					this.content.imageInfoArray.length >= 3 || this.content.imageInfoArray.push(
						e)
				}
			}, {
				key: "updateAccessSideImageInfoArray",
				value: function() {
					var e = this.content.imageInfoArray,
						t = e[0],
						n = t.width,
						o = void 0 === n ? 0 : n,
						r = t.height,
						a = void 0 === r ? 0 : r;
					0 !== o && 0 !== a && (mc(e), Object.assign(e[2], _c({
						originWidth: o,
						originHeight: a,
						min: 720
					})))
				}
			}, {
				key: "sendable",
				value: function() {
					return 0 !== this.content.imageInfoArray.length && ("" !== this.content
						.imageInfoArray[0].imageUrl && 0 !== this.content.imageInfoArray[0]
						.size)
				}
			}]), e
		}(),
		d_ = function() {
			function e(t) {
				o(this, e), this.type = Zn.MSG_FACE, this.content = t || null
			}
			return a(e, [{
				key: "sendable",
				value: function() {
					return null !== this.content
				}
			}]), e
		}(),
		p_ = function() {
			function e(t) {
				o(this, e), this.type = Zn.MSG_AUDIO, this._percent = 0, this.content = {
					downloadFlag: 2,
					second: t.second,
					size: t.size,
					url: t.url,
					remoteAudioUrl: t.url || "",
					uuid: t.uuid
				}
			}
			return a(e, [{
				key: "updatePercent",
				value: function(e) {
					this._percent = e, this._percent > 1 && (this._percent = 1)
				}
			}, {
				key: "updateAudioUrl",
				value: function(e) {
					this.content.remoteAudioUrl = e
				}
			}, {
				key: "sendable",
				value: function() {
					return "" !== this.content.remoteAudioUrl
				}
			}]), e
		}();
	nt({
		target: "Object",
		stat: !0,
		forced: !O,
		sham: !O
	}, {
		defineProperty: ee.f
	});
	var g_ = {
			from: !0,
			groupID: !0,
			groupName: !0,
			to: !0
		},
		h_ = function() {
			function e(t) {
				o(this, e), this.type = Zn.MSG_GRP_TIP, this.content = {}, this._initContent(t)
			}
			return a(e, [{
				key: "_initContent",
				value: function(e) {
					var t = this;
					Object.keys(e).forEach((function(n) {
						switch (n) {
							case "remarkInfo":
								break;
							case "groupProfile":
								t.content.groupProfile = {}, t._initGroupProfile(e[
									n]);
								break;
							case "operatorInfo":
							case "memberInfoList":
								break;
							case "msgMemberInfo":
								t.content.memberList = e[n], Object.defineProperty(t
									.content, "msgMemberInfo", {
										get: function() {
											return Gi.warn(
													"!!! 禁言的群提示消息中的 payload.msgMemberInfo 属性即将废弃，请使用 payload.memberList 属性替代。 \n",
													"msgMemberInfo 中的 shutupTime 属性对应更改为 memberList 中的 muteTime 属性，表示禁言时长。 \n",
													"参考：群提示消息 https://web.sdk.qcloud.com/im/doc/zh-cn/Message.html#.GroupTipPayload"
													), t.content.memberList
												.map((function(e) {
													return {
														userID: e
															.userID,
														shutupTime: e
															.muteTime
													}
												}))
										}
									});
								break;
							case "onlineMemberInfo":
								break;
							case "memberNum":
								t.content[n] = e[n], t.content.memberCount = e[n];
								break;
							default:
								t.content[n] = e[n]
						}
					})), this.content.userIDList || (this.content.userIDList = [this.content
						.operatorID
					])
				}
			}, {
				key: "_initGroupProfile",
				value: function(e) {
					for (var t = Object.keys(e), n = 0; n < t.length; n++) {
						var o = t[n];
						g_[o] && (this.content.groupProfile[o] = e[o])
					}
				}
			}]), e
		}(),
		f_ = {
			from: !0,
			groupID: !0,
			groupName: !0,
			to: !0
		},
		__ = function() {
			function e(t) {
				o(this, e), this.type = Zn.MSG_GRP_SYS_NOTICE, this.content = {}, this._initContent(t)
			}
			return a(e, [{
				key: "_initContent",
				value: function(e) {
					var t = this;
					Object.keys(e).forEach((function(n) {
						switch (n) {
							case "memberInfoList":
								break;
							case "remarkInfo":
								t.content.handleMessage = e[n];
								break;
							case "groupProfile":
								t.content.groupProfile = {}, t._initGroupProfile(e[
									n]);
								break;
							default:
								t.content[n] = e[n]
						}
					}))
				}
			}, {
				key: "_initGroupProfile",
				value: function(e) {
					for (var t = Object.keys(e), n = 0; n < t.length; n++) {
						var o = t[n];
						f_[o] && ("groupName" === o ? this.content.groupProfile.name = e[o] :
							this.content.groupProfile[o] = e[o])
					}
				}
			}]), e
		}(),
		m_ = Math.min,
		v_ = [].lastIndexOf,
		M_ = !!v_ && 1 / [1].lastIndexOf(1, -0) < 0,
		y_ = Bt("lastIndexOf"),
		I_ = M_ || !y_ ? function(e) {
			if (M_) return v_.apply(this, arguments) || 0;
			var t = x(this),
				n = we(t.length),
				o = n - 1;
			for (arguments.length > 1 && (o = m_(o, Le(arguments[1]))), o < 0 && (o = n + o); o >= 0; o--)
				if (o in t && t[o] === e) return o || 0;
			return -1
		} : v_;
	nt({
		target: "Array",
		proto: !0,
		forced: I_ !== [].lastIndexOf
	}, {
		lastIndexOf: I_
	});
	var S_ = function() {
			function e(t) {
				o(this, e), this.type = Zn.MSG_FILE, this._percent = 0;
				var n = this._getFileInfo(t);
				this.content = {
					downloadFlag: 2,
					fileUrl: t.url || "",
					uuid: t.uuid,
					fileName: n.name || "",
					fileSize: n.size || 0
				}
			}
			return a(e, [{
				key: "_getFileInfo",
				value: function(e) {
					if (e.fileName && e.fileSize) return {
						size: e.fileSize,
						name: e.fileName
					};
					if (Zs) return {};
					var t = e.file.files[0];
					return {
						size: t.size,
						name: t.name,
						type: t.type.slice(t.type.lastIndexOf("/") + 1).toLowerCase()
					}
				}
			}, {
				key: "updatePercent",
				value: function(e) {
					this._percent = e, this._percent > 1 && (this._percent = 1)
				}
			}, {
				key: "updateFileUrl",
				value: function(e) {
					this.content.fileUrl = e
				}
			}, {
				key: "sendable",
				value: function() {
					return "" !== this.content.fileUrl && ("" !== this.content.fileName && 0 !==
						this.content.fileSize)
				}
			}]), e
		}(),
		T_ = function() {
			function e(t) {
				o(this, e), this.type = Zn.MSG_CUSTOM, this.content = {
					data: t.data || "",
					description: t.description || "",
					extension: t.extension || ""
				}
			}
			return a(e, [{
				key: "setData",
				value: function(e) {
					return this.content.data = e, this
				}
			}, {
				key: "setDescription",
				value: function(e) {
					return this.content.description = e, this
				}
			}, {
				key: "setExtension",
				value: function(e) {
					return this.content.extension = e, this
				}
			}, {
				key: "sendable",
				value: function() {
					return 0 !== this.content.data.length || 0 !== this.content.description
						.length || 0 !== this.content.extension.length
				}
			}]), e
		}(),
		E_ = function() {
			function e(t) {
				o(this, e), this.type = Zn.MSG_VIDEO, this._percent = 0, this.content = {
					remoteVideoUrl: t.remoteVideoUrl || t.videoUrl || "",
					videoFormat: t.videoFormat,
					videoSecond: parseInt(t.videoSecond, 10),
					videoSize: t.videoSize,
					videoUrl: t.videoUrl,
					videoDownloadFlag: 2,
					videoUUID: t.videoUUID,
					thumbUUID: t.thumbUUID,
					thumbFormat: t.thumbFormat,
					thumbWidth: t.thumbWidth,
					thumbHeight: t.thumbHeight,
					thumbSize: t.thumbSize,
					thumbDownloadFlag: 2,
					thumbUrl: t.thumbUrl
				}
			}
			return a(e, [{
				key: "updatePercent",
				value: function(e) {
					this._percent = e, this._percent > 1 && (this._percent = 1)
				}
			}, {
				key: "updateVideoUrl",
				value: function(e) {
					e && (this.content.remoteVideoUrl = e)
				}
			}, {
				key: "sendable",
				value: function() {
					return "" !== this.content.remoteVideoUrl
				}
			}]), e
		}(),
		D_ = function e(t) {
			o(this, e), this.type = Zn.MSG_GEO, this.content = t
		},
		k_ = function() {
			function e(t) {
				if (o(this, e), this.from = t.from, this.messageSender = t.from, this.time = t.time, this
					.messageSequence = t.sequence, this.clientSequence = t.clientSequence || t.sequence, this
					.messageRandom = t.random, this.cloudCustomData = t.cloudCustomData || "", t.ID) this.nick =
					t.nick || "", this.avatar = t.avatar || "", this.messageBody = [{
						type: t.type,
						payload: t.payload
					}], t.conversationType.startsWith(Zn.CONV_C2C) ? this.receiverUserID = t.to : t
					.conversationType.startsWith(Zn.CONV_GROUP) && (this.receiverGroupID = t.to), this
					.messageReceiver = t.to;
				else {
					this.nick = t.nick || "", this.avatar = t.avatar || "", this.messageBody = [];
					var n = t.elements[0].type,
						r = t.elements[0].content;
					this._patchRichMediaPayload(n, r), n === Zn.MSG_MERGER ? this.messageBody.push({
							type: n,
							payload: new C_(r).content
						}) : this.messageBody.push({
							type: n,
							payload: r
						}), t.groupID && (this.receiverGroupID = t.groupID, this.messageReceiver = t.groupID), t
						.to && (this.receiverUserID = t.to, this.messageReceiver = t.to)
				}
			}
			return a(e, [{
				key: "_patchRichMediaPayload",
				value: function(e, t) {
					e === Zn.MSG_IMAGE ? t.imageInfoArray.forEach((function(e) {
							!e.imageUrl && e.url && (e.imageUrl = e.url, e.sizeType = e
								.type, 1 === e.type ? e.type = 0 : 3 === e.type && (
									e.type = 1))
						})) : e === Zn.MSG_VIDEO ? !t.remoteVideoUrl && t.videoUrl && (t
							.remoteVideoUrl = t.videoUrl) : e === Zn.MSG_AUDIO ? !t
						.remoteAudioUrl && t.url && (t.remoteAudioUrl = t.url) : e === Zn
						.MSG_FILE && !t.fileUrl && t.url && (t.fileUrl = t.url, t.url = void 0)
				}
			}]), e
		}(),
		C_ = function() {
			function e(t) {
				if (o(this, e), this.type = Zn.MSG_MERGER, this.content = {
						downloadKey: "",
						pbDownloadKey: "",
						messageList: [],
						title: "",
						abstractList: [],
						compatibleText: "",
						version: 0,
						layersOverLimit: !1
					}, t.downloadKey) {
					var n = t.downloadKey,
						r = t.pbDownloadKey,
						a = t.title,
						s = t.abstractList,
						i = t.compatibleText,
						c = t.version;
					this.content.downloadKey = n, this.content.pbDownloadKey = r, this.content.title = a, this
						.content.abstractList = s, this.content.compatibleText = i, this.content.version = c ||
						0
				} else if (Tc(t.messageList)) 1 === t.layersOverLimit && (this.content.layersOverLimit = !0);
				else {
					var u = t.messageList,
						l = t.title,
						d = t.abstractList,
						p = t.compatibleText,
						g = t.version,
						h = [];
					u.forEach((function(e) {
							if (!Tc(e)) {
								var t = new k_(e);
								h.push(t)
							}
						})), this.content.messageList = h, this.content.title = l, this.content.abstractList =
						d, this.content.compatibleText = p, this.content.version = g || 0
				}
				Gi.debug("MergerElement.content:", this.content)
			}
			return a(e, [{
				key: "sendable",
				value: function() {
					return !Tc(this.content.messageList) || !Tc(this.content.downloadKey)
				}
			}]), e
		}(),
		N_ = {
			1: Zn.MSG_PRIORITY_HIGH,
			2: Zn.MSG_PRIORITY_NORMAL,
			3: Zn.MSG_PRIORITY_LOW,
			4: Zn.MSG_PRIORITY_LOWEST
		},
		A_ = function() {
			function e(t) {
				o(this, e), this.ID = "", this.conversationID = t.conversationID || null, this
					.conversationType = t.conversationType || Zn.CONV_C2C, this.conversationSubType = t
					.conversationSubType, this.time = t.time || Math.ceil(Date.now() / 1e3), this.sequence = t
					.sequence || 0, this.clientSequence = t.clientSequence || t.sequence || 0, this.random = t
					.random || 0 === t.random ? t.random : tc(), this.priority = this._computePriority(t
						.priority), this.nick = t.nick || "", this.avatar = t.avatar || "", this.isPeerRead = !
					1, this.nameCard = "", this._elements = [], this.isPlaceMessage = t.isPlaceMessage || 0,
					this.isRevoked = 2 === t.isPlaceMessage || 8 === t.msgFlagBits, this.geo = {}, this.from = t
					.from || null, this.to = t.to || null, this.flow = "", this.isSystemMessage = t
					.isSystemMessage || !1, this.protocol = t.protocol || "JSON", this.isResend = !1, this
					.isRead = !1, this.status = t.status || mu.SUCCESS, this._onlineOnlyFlag = !1, this
					._groupAtInfoList = [], this._relayFlag = !1, this.atUserList = [], this.cloudCustomData = t
					.cloudCustomData || "", this.isDeleted = !1, this.isModified = !1, this.reInitialize(t
						.currentUser), this.extractGroupInfo(t.groupProfile || null), this.handleGroupAtInfo(t)
			}
			return a(e, [{
				key: "elements",
				get: function() {
					return Gi.warn(
						"！！！Message 实例的 elements 属性即将废弃，请尽快修改。使用 type 和 payload 属性处理单条消息，兼容组合消息使用 _elements 属性！！！"
						), this._elements
				}
			}, {
				key: "getElements",
				value: function() {
					return this._elements
				}
			}, {
				key: "extractGroupInfo",
				value: function(e) {
					if (null !== e) {
						xi(e.nick) && (this.nick = e.nick), xi(e.avatar) && (this.avatar = e
							.avatar);
						var t = e.messageFromAccountExtraInformation;
						Ki(t) && xi(t.nameCard) && (this.nameCard = t.nameCard)
					}
				}
			}, {
				key: "handleGroupAtInfo",
				value: function(e) {
					var t = this;
					e.payload && e.payload.atUserList && e.payload.atUserList.forEach((function(
						e) {
						e !== Zn.MSG_AT_ALL ? (t._groupAtInfoList.push({
							groupAtAllFlag: 0,
							groupAtUserID: e
						}), t.atUserList.push(e)) : (t._groupAtInfoList.push({
							groupAtAllFlag: 1
						}), t.atUserList.push(Zn.MSG_AT_ALL))
					})), Bi(e.groupAtInfo) && e.groupAtInfo.forEach((function(e) {
						1 === e.groupAtAllFlag ? t.atUserList.push(e
							.groupAtUserID) : 2 === e.groupAtAllFlag && t.atUserList
							.push(Zn.MSG_AT_ALL)
					}))
				}
			}, {
				key: "getGroupAtInfoList",
				value: function() {
					return this._groupAtInfoList
				}
			}, {
				key: "_initProxy",
				value: function() {
					this._elements[0] && (this.payload = this._elements[0].content, this.type =
						this._elements[0].type)
				}
			}, {
				key: "reInitialize",
				value: function(e) {
					e && (this.status = this.from ? mu.SUCCESS : mu.UNSEND, !this.from && (this
							.from = e)), this._initFlow(e), this._initSequence(e), this
						._concatConversationID(e), this.generateMessageID(e)
				}
			}, {
				key: "isSendable",
				value: function() {
					return 0 !== this._elements.length && ("function" != typeof this._elements[
							0].sendable ? (Gi.warn("".concat(this._elements[0].type,
							' need "boolean : sendable()" method')), !1) : this._elements[0]
						.sendable())
				}
			}, {
				key: "_initTo",
				value: function(e) {
					this.conversationType === Zn.CONV_GROUP && (this.to = e.groupID)
				}
			}, {
				key: "_initSequence",
				value: function(e) {
					0 === this.clientSequence && e && (this.clientSequence = function(e) {
						if (!e) return Gi.error(
							"autoIncrementIndex(string: key) need key parameter"
							), !1;
						if (void 0 === ac[e]) {
							var t = new Date,
								n = "3".concat(t.getHours()).slice(-2),
								o = "0".concat(t.getMinutes()).slice(-2),
								r = "0".concat(t.getSeconds()).slice(-2);
							ac[e] = parseInt([n, o, r, "0001"].join("")), n = null, o =
								null, r = null, Gi.log("autoIncrementIndex start index:"
									.concat(ac[e]))
						}
						return ac[e]++
					}(e)), 0 === this.sequence && this.conversationType === Zn.CONV_C2C && (
						this.sequence = this.clientSequence)
				}
			}, {
				key: "generateMessageID",
				value: function(e) {
					var t = e === this.from ? 1 : 0,
						n = this.sequence > 0 ? this.sequence : this.clientSequence;
					this.ID = "".concat(this.conversationID, "-").concat(n, "-").concat(this
						.random, "-").concat(t)
				}
			}, {
				key: "_initFlow",
				value: function(e) {
					"" !== e && (e === this.from ? (this.flow = "out", this.isRead = !0) : this
						.flow = "in")
				}
			}, {
				key: "_concatConversationID",
				value: function(e) {
					var t = this.to,
						n = "",
						o = this.conversationType;
					o !== Zn.CONV_SYSTEM ? (n = o === Zn.CONV_C2C ? e === this.from ? t : this
							.from : this.to, this.conversationID = "".concat(o).concat(n)) :
						this.conversationID = Zn.CONV_SYSTEM
				}
			}, {
				key: "isElement",
				value: function(e) {
					return e instanceof Xg || e instanceof l_ || e instanceof d_ ||
						e instanceof p_ || e instanceof S_ || e instanceof E_ ||
						e instanceof h_ || e instanceof __ || e instanceof T_ ||
						e instanceof D_ || e instanceof C_
				}
			}, {
				key: "setElement",
				value: function(e) {
					var t = this;
					if (this.isElement(e)) return this._elements = [e], void this._initProxy();
					var n = function(e) {
						if (e.type && e.content) switch (e.type) {
							case Zn.MSG_TEXT:
								t.setTextElement(e.content);
								break;
							case Zn.MSG_IMAGE:
								t.setImageElement(e.content);
								break;
							case Zn.MSG_AUDIO:
								t.setAudioElement(e.content);
								break;
							case Zn.MSG_FILE:
								t.setFileElement(e.content);
								break;
							case Zn.MSG_VIDEO:
								t.setVideoElement(e.content);
								break;
							case Zn.MSG_CUSTOM:
								t.setCustomElement(e.content);
								break;
							case Zn.MSG_GEO:
								t.setGEOElement(e.content);
								break;
							case Zn.MSG_GRP_TIP:
								t.setGroupTipElement(e.content);
								break;
							case Zn.MSG_GRP_SYS_NOTICE:
								t.setGroupSystemNoticeElement(e.content);
								break;
							case Zn.MSG_FACE:
								t.setFaceElement(e.content);
								break;
							case Zn.MSG_MERGER:
								t.setMergerElement(e.content);
								break;
							default:
								Gi.warn(e.type, e.content, "no operation......")
						}
					};
					if (Bi(e))
						for (var o = 0; o < e.length; o++) n(e[o]);
					else n(e);
					this._initProxy()
				}
			}, {
				key: "clearElement",
				value: function() {
					this._elements.length = 0
				}
			}, {
				key: "setTextElement",
				value: function(e) {
					var t = "string" == typeof e ? e : e.text,
						n = new Xg({
							text: t
						});
					this._elements.push(n)
				}
			}, {
				key: "setImageElement",
				value: function(e) {
					var t = new l_(e);
					this._elements.push(t)
				}
			}, {
				key: "setAudioElement",
				value: function(e) {
					var t = new p_(e);
					this._elements.push(t)
				}
			}, {
				key: "setFileElement",
				value: function(e) {
					var t = new S_(e);
					this._elements.push(t)
				}
			}, {
				key: "setVideoElement",
				value: function(e) {
					var t = new E_(e);
					this._elements.push(t)
				}
			}, {
				key: "setGEOElement",
				value: function(e) {
					var t = new D_(e);
					this._elements.push(t)
				}
			}, {
				key: "setCustomElement",
				value: function(e) {
					var t = new T_(e);
					this._elements.push(t)
				}
			}, {
				key: "setGroupTipElement",
				value: function(e) {
					var t = {},
						n = e.operationType;
					Tc(e.memberInfoList) ? e.operatorInfo && (t = e.operatorInfo) : n !== Zn
						.GRP_TIP_MBR_JOIN && n !== Zn.GRP_TIP_MBR_KICKED_OUT && n !== Zn
						.GRP_TIP_MBR_SET_ADMIN && n !== Zn.GRP_TIP_MBR_CANCELED_ADMIN || (t = e
							.memberInfoList[0]);
					var o = t,
						r = o.nick,
						a = o.avatar;
					xi(r) && (this.nick = r), xi(a) && (this.avatar = a);
					var s = new h_(e);
					this._elements.push(s)
				}
			}, {
				key: "setGroupSystemNoticeElement",
				value: function(e) {
					var t = new __(e);
					this._elements.push(t)
				}
			}, {
				key: "setFaceElement",
				value: function(e) {
					var t = new d_(e);
					this._elements.push(t)
				}
			}, {
				key: "setMergerElement",
				value: function(e) {
					var t = new C_(e);
					this._elements.push(t)
				}
			}, {
				key: "setIsRead",
				value: function(e) {
					this.isRead = e
				}
			}, {
				key: "setRelayFlag",
				value: function(e) {
					this._relayFlag = e
				}
			}, {
				key: "getRelayFlag",
				value: function() {
					return this._relayFlag
				}
			}, {
				key: "setOnlineOnlyFlag",
				value: function(e) {
					this._onlineOnlyFlag = e
				}
			}, {
				key: "getOnlineOnlyFlag",
				value: function() {
					return this._onlineOnlyFlag
				}
			}, {
				key: "_computePriority",
				value: function(e) {
					if (ji(e)) return Zn.MSG_PRIORITY_NORMAL;
					if (xi(e) && -1 !== Object.values(N_).indexOf(e)) return e;
					if (qi(e)) {
						var t = "" + e;
						if (-1 !== Object.keys(N_).indexOf(t)) return N_[t]
					}
					return Zn.MSG_PRIORITY_NORMAL
				}
			}, {
				key: "setNickAndAvatar",
				value: function(e) {
					var t = e.nick,
						n = e.avatar;
					xi(t) && (this.nick = t), xi(n) && (this.avatar = n)
				}
			}]), e
		}(),
		O_ = function(e) {
			return {
				code: 0,
				data: e || {}
			}
		},
		L_ = "https://cloud.tencent.com/document/product/",
		R_ = "您可以在即时通信 IM 控制台的【开发辅助工具(https://console.cloud.tencent.com/im-detail/tool-usersig)】页面校验 UserSig。",
		w_ = "UserSig 非法，请使用官网提供的 API 重新生成 UserSig(".concat(L_, "269/32688)。"),
		b_ = "#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0-timmsgelement",
		P_ = {
			70001: "UserSig 已过期，请重新生成。建议 UserSig 有效期设置不小于24小时。",
			70002: "UserSig 长度为0，请检查传入的 UserSig 是否正确。",
			70003: w_,
			70005: w_,
			70009: "UserSig 验证失败，可能因为生成 UserSig 时混用了其他 SDKAppID 的私钥或密钥导致，请使用对应 SDKAppID 下的私钥或密钥重新生成 UserSig("
				.concat(L_, "269/32688)。"),
			70013: "请求中的 UserID 与生成 UserSig 时使用的 UserID 不匹配。".concat(R_),
			70014: "请求中的 SDKAppID 与生成 UserSig 时使用的 SDKAppID 不匹配。".concat(R_),
			70016: "密钥不存在，UserSig 验证失败，请在即时通信 IM 控制台获取密钥(".concat(L_,
				"269/32578#.E8.8E.B7.E5.8F.96.E5.AF.86.E9.92.A5)。"),
			70020: "SDKAppID 未找到，请在即时通信 IM 控制台确认应用信息。",
			70050: "UserSig 验证次数过于频繁。请检查 UserSig 是否正确，并于1分钟后重新验证。".concat(R_),
			70051: "帐号被拉入黑名单。",
			70052: "UserSig 已经失效，请重新生成，再次尝试。",
			70107: "因安全原因被限制登录，请不要频繁登录。",
			70169: "请求的用户帐号不存在。",
			70114: "".concat("服务端内部超时，请稍后重试。"),
			70202: "".concat("服务端内部超时，请稍后重试。"),
			70206: "请求中批量数量不合法。",
			70402: "参数非法，请检查必填字段是否填充，或者字段的填充是否满足协议要求。",
			70403: "请求失败，需要 App 管理员权限。",
			70398: "帐号数超限。如需创建多于100个帐号，请将应用升级为专业版，具体操作指引请参见购买指引(".concat(L_, "269/32458)。"),
			70500: "".concat("服务端内部错误，请重试。"),
			71e3: "删除帐号失败。仅支持删除体验版帐号，您当前应用为专业版，暂不支持帐号删除。",
			20001: "请求包非法。",
			20002: "UserSig 或 A2 失效。",
			20003: "消息发送方或接收方 UserID 无效或不存在，请检查 UserID 是否已导入即时通信 IM。",
			20004: "网络异常，请重试。",
			20005: "".concat("服务端内部错误，请重试。"),
			20006: "触发发送".concat("单聊消息", "之前回调，App 后台返回禁止下发该消息。"),
			20007: "发送".concat("单聊消息", "，被对方拉黑，禁止发送。消息发送状态默认展示为失败，您可以登录控制台修改该场景下的消息发送状态展示结果，具体操作请参见消息保留设置(")
				.concat(L_, "269/38656)。"),
			20009: "消息发送双方互相不是好友，禁止发送（配置".concat("单聊消息", "校验好友关系才会出现）。"),
			20010: "发送".concat("单聊消息", "，自己不是对方的好友（单向关系），禁止发送。"),
			20011: "发送".concat("单聊消息", "，对方不是自己的好友（单向关系），禁止发送。"),
			20012: "发送方被禁言，该条消息被禁止发送。",
			20016: "消息撤回超过了时间限制（默认2分钟）。",
			20018: "删除漫游内部错误。",
			90001: "JSON 格式解析失败，请检查请求包是否符合 JSON 规范。",
			90002: "".concat("JSON 格式请求包体",
				"中 MsgBody 不符合消息格式描述，或者 MsgBody 不是 Array 类型，请参考 TIMMsgElement 对象的定义(").concat(L_,
				"269/2720").concat(b_, ")。"),
			90003: "".concat("JSON 格式请求包体", "中缺少 To_Account 字段或者 To_Account 帐号不存在。"),
			90005: "".concat("JSON 格式请求包体", "中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型。"),
			90006: "".concat("JSON 格式请求包体", "中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型。"),
			90007: "".concat("JSON 格式请求包体", "中 MsgBody 类型不是 Array 类型，请将其修改为 Array 类型。"),
			90008: "".concat("JSON 格式请求包体", "中缺少 From_Account 字段或者 From_Account 帐号不存在。"),
			90009: "请求需要 App 管理员权限。",
			90010: "".concat("JSON 格式请求包体", "不符合消息格式描述，请参考 TIMMsgElement 对象的定义(").concat(L_, "269/2720").concat(
				b_, ")。"),
			90011: "批量发消息目标帐号超过500，请减少 To_Account 中目标帐号数量。",
			90012: "To_Account 没有注册或不存在，请确认 To_Account 是否导入即时通信 IM 或者是否拼写错误。",
			90026: "消息离线存储时间错误（最多不能超过7天）。",
			90031: "".concat("JSON 格式请求包体", "中 SyncOtherMachine 字段不是 Integer 类型。"),
			90044: "".concat("JSON 格式请求包体", "中 MsgLifeTime 字段不是 Integer 类型。"),
			90048: "请求的用户帐号不存在。",
			90054: "撤回请求中的 MsgKey 不合法。",
			90994: "".concat("服务端内部错误，请重试。"),
			90995: "".concat("服务端内部错误，请重试。"),
			91e3: "".concat("服务端内部错误，请重试。"),
			90992: "".concat("服务端内部错误，请重试。",
				"如果所有请求都返回该错误码，且 App 配置了第三方回调，请检查 App 服务端是否正常向即时通信 IM 后台服务端返回回调结果。"),
			93e3: "JSON 数据包超长，消息包体请不要超过8k。",
			91101: "Web 端长轮询被踢（Web 端同时在线实例个数超出限制）。",
			10002: "".concat("服务端内部错误，请重试。"),
			10003: "请求中的接口名称错误，请核对接口名称并重试。",
			10004: "参数非法，请根据错误描述检查请求是否正确。",
			10005: "请求包体中携带的帐号数量过多。",
			10006: "操作频率限制，请尝试降低调用的频率。",
			10007: "操作权限不足，例如 Work ".concat("群组", "中普通成员尝试执行踢人操作，但只有 App 管理员才有权限。"),
			10008: "请求非法，可能是请求中携带的签名信息验证不正确，请再次尝试。",
			10009: "该群不允许群主主动退出。",
			10010: "".concat("群组", "不存在，或者曾经存在过，但是目前已经被解散。"),
			10011: "解析 JSON 包体失败，请检查包体的格式是否符合 JSON 格式。",
			10012: "发起操作的 UserID 非法，请检查发起操作的用户 UserID 是否填写正确。",
			10013: "被邀请加入的用户已经是群成员。",
			10014: "群已满员，无法将请求中的用户加入".concat("群组", "，如果是批量加人，可以尝试减少加入用户的数量。"),
			10015: "找不到指定 ID 的".concat("群组", "。"),
			10016: "App 后台通过第三方回调拒绝本次操作。",
			10017: "因被禁言而不能发送消息，请检查发送者是否被设置禁言。",
			10018: "应答包长度超过最大包长（1MB），请求的内容过多，请尝试减少单次请求的数据量。",
			10019: "请求的用户帐号不存在。",
			10021: "".concat("群组", " ID 已被使用，请选择其他的").concat("群组", " ID。"),
			10023: "发消息的频率超限，请延长两次发消息时间的间隔。",
			10024: "此邀请或者申请请求已经被处理。",
			10025: "".concat("群组", " ID 已被使用，并且操作者为群主，可以直接使用。"),
			10026: "该 SDKAppID 请求的命令字已被禁用。",
			10030: "请求撤回的消息不存在。",
			10031: "消息撤回超过了时间限制（默认2分钟）。",
			10032: "请求撤回的消息不支持撤回操作。",
			10033: "".concat("群组", "类型不支持消息撤回操作。"),
			10034: "该消息类型不支持删除操作。",
			10035: "直播群和在线成员广播大群不支持删除消息。",
			10036: "直播群创建数量超过了限制，请参考价格说明(".concat(L_, "269/11673)购买预付费套餐“IM直播群”。"),
			10037: "单个用户可创建和加入的".concat("群组", "数量超过了限制，请参考价格说明(").concat(L_, "269/11673)购买或升级预付费套餐“单人可创建与加入")
				.concat("群组", "数”。"),
			10038: "群成员数量超过限制，请参考价格说明(".concat(L_, "269/11673)购买或升级预付费套餐“扩展群人数上限”。"),
			10041: "该应用（SDKAppID）已配置不支持群消息撤回。",
			30001: "请求参数错误，请根据错误描述检查请求参数",
			30002: "SDKAppID 不匹配",
			30003: "请求的用户帐号不存在",
			30004: "请求需要 App 管理员权限",
			30005: "关系链字段中包含敏感词",
			30006: "".concat("服务端内部错误，请重试。"),
			30007: "".concat("网络超时，请稍后重试. "),
			30008: "并发写导致写冲突，建议使用批量方式",
			30009: "后台禁止该用户发起加好友请求",
			30010: "自己的好友数已达系统上限",
			30011: "分组已达系统上限",
			30012: "未决数已达系统上限",
			30014: "对方的好友数已达系统上限",
			30515: "请求添加好友时，对方在自己的黑名单中，不允许加好友",
			30516: "请求添加好友时，对方的加好友验证方式是不允许任何人添加自己为好友",
			30525: "请求添加好友时，自己在对方的黑名单中，不允许加好友",
			30539: "等待对方同意",
			30540: "添加好友请求被安全策略打击，请勿频繁发起添加好友请求",
			31704: "与请求删除的帐号之间不存在好友关系",
			31707: "删除好友请求被安全策略打击，请勿频繁发起删除好友请求"
		},
		G_ = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this)).code = e.code, r.message = P_[e.code] || e.message, r
					.data = e.data || {}, r
			}
			return n
		}(p(Error)),
		U_ = null,
		F_ = function(e) {
			U_ = e
		},
		q_ = function(e) {
			return Promise.resolve(O_(e))
		},
		x_ = function(e) {
			var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
			if (e instanceof G_) return t && null !== U_ && U_.emit(Qn.ERROR, e), Promise.reject(e);
			if (e instanceof Error) {
				var n = new G_({
					code: cd.UNCAUGHT_ERROR,
					message: e.message
				});
				return t && null !== U_ && U_.emit(Qn.ERROR, n), Promise.reject(n)
			}
			if (ji(e) || ji(e.code) || ji(e.message)) Gi.error(
				"IMPromise.reject 必须指定code(错误码)和message(错误信息)!!!");
			else {
				if (qi(e.code) && xi(e.message)) {
					var o = new G_(e);
					return t && null !== U_ && U_.emit(Qn.ERROR, o), Promise.reject(o)
				}
				Gi.error("IMPromise.reject code(错误码)必须为数字，message(错误信息)必须为字符串!!!")
			}
		},
		V_ = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "C2CModule", r
			}
			return a(n, [{
				key: "onNewC2CMessage",
				value: function(e) {
					var t = e.dataList,
						n = e.isInstantMessage,
						o = e.C2CRemainingUnreadList;
					Gi.debug("".concat(this._className, ".onNewC2CMessage count:").concat(t
						.length, " isInstantMessage:").concat(n));
					var r = this._newC2CMessageStoredAndSummary({
							dataList: t,
							C2CRemainingUnreadList: o,
							isInstantMessage: n
						}),
						a = r.conversationOptionsList,
						s = r.messageList;
					(this.filterModifiedMessage(s), a.length > 0) && this.getModule(Ku)
						.onNewMessage({
							conversationOptionsList: a,
							isInstantMessage: n
						});
					var i = this.filterUnmodifiedMessage(s);
					n && i.length > 0 && this.emitOuterEvent(Qn.MESSAGE_RECEIVED, i), s.length =
						0
				}
			}, {
				key: "_newC2CMessageStoredAndSummary",
				value: function(e) {
					for (var t = e.dataList, n = e.C2CRemainingUnreadList, o = e
							.isInstantMessage, r = null, a = [], s = [], i = {}, c = this
							.getModule(Yu), u = 0, l = t.length; u < l; u++) {
						var d = t[u];
						d.currentUser = this.getMyUserID(), d.conversationType = Zn.CONV_C2C, d
							.isSystemMessage = !!d.isSystemMessage, r = new A_(d), d.elements =
							c.parseElements(d.elements, d.from), r.setElement(d.elements), r
							.setNickAndAvatar({
								nick: d.nick,
								avatar: d.avatar
							});
						var p = r.conversationID;
						if (o) {
							var g = !1,
								h = this.getModule(Ku);
							if (r.from !== this.getMyUserID()) {
								var f = h.getLatestMessageSentByPeer(p);
								if (f) {
									var _ = f.nick,
										m = f.avatar;
									_ === r.nick && m === r.avatar || (g = !0)
								}
							} else {
								var v = h.getLatestMessageSentByMe(p);
								if (v) {
									var M = v.nick,
										y = v.avatar;
									M === r.nick && y === r.avatar || h.modifyMessageSentByMe({
										conversationID: p,
										latestNick: r.nick,
										latestAvatar: r.avatar
									})
								}
							}
							var I = 1 === t[u].isModified;
							if (h.isMessageSentByCurrentInstance(r) ? r.isModified = I : I = !1,
								0 === d.msgLifeTime) r.setOnlineOnlyFlag(!0), s.push(r);
							else {
								if (!h.pushIntoMessageList(s, r, I)) continue;
								g && (h.modifyMessageSentByPeer(p), h
									.updateUserProfileSpecifiedKey({
										conversationID: p,
										nick: r.nick,
										avatar: r.avatar
									}))
							}
							this.getModule(nl).addMessageDelay({
								currentTime: Date.now(),
								time: r.time
							})
						}
						if (0 !== d.msgLifeTime) {
							if (!1 === r.getOnlineOnlyFlag())
								if (ji(i[p])) i[p] = a.push({
									conversationID: p,
									unreadCount: "out" === r.flow ? 0 : 1,
									type: r.conversationType,
									subType: r.conversationSubType,
									lastMessage: r
								}) - 1;
								else {
									var S = i[p];
									a[S].type = r.conversationType, a[S].subType = r
										.conversationSubType, a[S].lastMessage = r, "in" === r
										.flow && a[S].unreadCount++
								}
						} else r.setOnlineOnlyFlag(!0)
					}
					if (Bi(n))
						for (var T = function(e, t) {
								var o = a.find((function(t) {
									return t.conversationID === "C2C".concat(n[
										e].from)
								}));
								o ? o.unreadCount += n[e].count : a.push({
									conversationID: "C2C".concat(n[e].from),
									unreadCount: n[e].count,
									type: Zn.CONV_C2C,
									lastMsgTime: n[e].lastMsgTime
								})
							}, E = 0, D = n.length; E < D; E++) T(E);
					return {
						conversationOptionsList: a,
						messageList: s
					}
				}
			}, {
				key: "onC2CMessageRevoked",
				value: function(e) {
					var t = this;
					Gi.debug("".concat(this._className, ".onC2CMessageRevoked count:").concat(e
						.dataList.length));
					var n = this.getModule(Ku),
						o = [],
						r = null;
					e.dataList.forEach((function(e) {
						if (e.c2cMessageRevokedNotify) {
							var a = e.c2cMessageRevokedNotify.revokedInfos;
							ji(a) || a.forEach((function(e) {
								var a = t.getMyUserID() === e.from ? ""
									.concat(Zn.CONV_C2C).concat(e.to) :
									"".concat(Zn.CONV_C2C).concat(e
										.from);
								(r = n.revoke(a, e.sequence, e
								.random)) && o.push(r)
							}))
						}
					})), 0 !== o.length && (n.onMessageRevoked(o), this.emitOuterEvent(Qn
						.MESSAGE_REVOKED, o))
				}
			}, {
				key: "onC2CMessageReadReceipt",
				value: function(e) {
					var t = this;
					e.dataList.forEach((function(e) {
						if (!Tc(e.c2cMessageReadReceipt)) {
							var n = e.c2cMessageReadReceipt.to;
							e.c2cMessageReadReceipt.uinPairReadArray.forEach((
								function(e) {
									var o = e.peerReadTime;
									Gi.debug("".concat(t._className,
										"._onC2CMessageReadReceipt to:"
										).concat(n,
										" peerReadTime:").concat(o));
									var r = "".concat(Zn.CONV_C2C).concat(
										n),
										a = t.getModule(Ku);
									a.recordPeerReadTime(r, o), a
										.updateMessageIsPeerReadProperty(r,
											o)
								}))
						}
					}))
				}
			}, {
				key: "onC2CMessageReadNotice",
				value: function(e) {
					var t = this;
					e.dataList.forEach((function(e) {
						if (!Tc(e.c2cMessageReadNotice)) {
							var n = t.getModule(Ku);
							e.c2cMessageReadNotice.uinPairReadArray.forEach((
								function(e) {
									var o = e.from,
										r = e.peerReadTime;
									Gi.debug("".concat(t._className,
										".onC2CMessageReadNotice from:"
										).concat(o,
										" lastReadTime:").concat(r));
									var a = "".concat(Zn.CONV_C2C).concat(
									o);
									n.updateIsReadAfterReadReport({
										conversationID: a,
										lastMessageTime: r
									}), n.updateUnreadCount(a)
								}))
						}
					}))
				}
			}, {
				key: "sendMessage",
				value: function(e, t) {
					var n = this._createC2CMessagePack(e, t);
					return this.request(n)
				}
			}, {
				key: "_createC2CMessagePack",
				value: function(e, t) {
					var n = null;
					t && (t.offlinePushInfo && (n = t.offlinePushInfo), !0 === t
						.onlineUserOnly && (n ? n.disablePush = !0 : n = {
							disablePush: !0
						}));
					var o = "";
					return xi(e.cloudCustomData) && e.cloudCustomData.length > 0 && (o = e
						.cloudCustomData), {
						protocolName: ul,
						tjgID: this.generateTjgID(e),
						requestData: {
							fromAccount: this.getMyUserID(),
							toAccount: e.to,
							msgTimeStamp: Math.ceil(Date.now() / 1e3),
							msgBody: e.getElements(),
							cloudCustomData: o,
							msgSeq: e.sequence,
							msgRandom: e.random,
							msgLifeTime: this.isOnlineMessage(e, t) ? 0 : void 0,
							nick: e.nick,
							avatar: e.avatar,
							offlinePushInfo: n ? {
								pushFlag: !0 === n.disablePush ? 1 : 0,
								title: n.title || "",
								desc: n.description || "",
								ext: n.extension || "",
								apnsInfo: {
									badgeMode: !0 === n.ignoreIOSBadge ? 1 : 0
								},
								androidInfo: {
									OPPOChannelID: n.androidOPPOChannelID || ""
								}
							} : void 0
						}
					}
				}
			}, {
				key: "isOnlineMessage",
				value: function(e, t) {
					return !(!t || !0 !== t.onlineUserOnly)
				}
			}, {
				key: "revokeMessage",
				value: function(e) {
					return this.request({
						protocolName: _l,
						requestData: {
							msgInfo: {
								fromAccount: e.from,
								toAccount: e.to,
								msgSeq: e.sequence,
								msgRandom: e.random,
								msgTimeStamp: e.time
							}
						}
					})
				}
			}, {
				key: "deleteMessage",
				value: function(e) {
					var t = e.to,
						n = e.keyList;
					return Gi.log("".concat(this._className, ".deleteMessage toAccount:")
						.concat(t, " count:").concat(n.length)), this.request({
						protocolName: yl,
						requestData: {
							fromAccount: this.getMyUserID(),
							to: t,
							keyList: n
						}
					})
				}
			}, {
				key: "setMessageRead",
				value: function(e) {
					var t = this,
						n = e.conversationID,
						o = e.lastMessageTime,
						r = "".concat(this._className, ".setMessageRead");
					Gi.log("".concat(r, " conversationID:").concat(n, " lastMessageTime:")
						.concat(o)), qi(o) || Gi.warn("".concat(r,
						" 请勿修改 Conversation.lastMessage.lastTime，否则可能会导致已读上报结果不准确"));
					var a = new Lp(Jp);
					return a.setMessage("conversationID:".concat(n, " lastMessageTime:").concat(
						o)), this.request({
						protocolName: ml,
						requestData: {
							C2CMsgReaded: {
								cookie: "",
								C2CMsgReadedItem: [{
									toAccount: n.replace("C2C", ""),
									lastMessageTime: o,
									receipt: 1
								}]
							}
						}
					}).then((function() {
						a.setNetworkType(t.getNetworkType()).end(), Gi.log(""
							.concat(r, " ok"));
						var e = t.getModule(Ku);
						return e.updateIsReadAfterReadReport({
							conversationID: n,
							lastMessageTime: o
						}), e.updateUnreadCount(n), O_()
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							a.setError(e, o, r).end()
						})), Gi.log("".concat(r, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "getRoamingMessage",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".getRoamingMessage"),
						o = e.peerAccount,
						r = e.conversationID,
						a = e.count,
						s = e.lastMessageTime,
						i = e.messageKey,
						c = "peerAccount:".concat(o, " count:").concat(a || 15,
							" lastMessageTime:").concat(s || 0, " messageKey:").concat(i);
					Gi.log("".concat(n, " ").concat(c));
					var u = new Lp($p);
					return this.request({
						protocolName: vl,
						requestData: {
							peerAccount: o,
							count: a || 15,
							lastMessageTime: s || 0,
							messageKey: i
						}
					}).then((function(e) {
						var o = e.data,
							a = o.complete,
							s = o.messageList,
							i = o.messageKey;
						ji(s) ? Gi.log("".concat(n, " ok. complete:").concat(a,
							" but messageList is undefined!")) : Gi.log(""
							.concat(n, " ok. complete:").concat(a, " count:")
							.concat(s.length)), u.setNetworkType(t
							.getNetworkType()).setMessage("".concat(c,
							" complete:").concat(a, " length:").concat(s
							.length)).end();
						var l = t.getModule(Ku);
						1 === a && l.setCompleted(r);
						var d = l.storeRoamingMessage(s, r);
						l.modifyMessageList(r), l.updateIsRead(r), l
							.updateRoamingMessageKey(r, i);
						var p = l.getPeerReadTime(r);
						if (Gi.log("".concat(n,
									" update isPeerRead property. conversationID:")
								.concat(r, " peerReadTime:").concat(p)), p) l
							.updateMessageIsPeerReadProperty(r, p);
						else {
							var g = r.replace(Zn.CONV_C2C, "");
							t.getRemotePeerReadTime([g]).then((function() {
								l.updateMessageIsPeerReadProperty(r, l
									.getPeerReadTime(r))
							}))
						}
						return d
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							u.setMessage(c).setError(e, o, r).end()
						})), Gi.warn("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "getRemotePeerReadTime",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".getRemotePeerReadTime");
					if (Tc(e)) return Gi.warn("".concat(n, " userIDList is empty!")), Promise
						.resolve();
					var o = new Lp(Zp);
					return Gi.log("".concat(n, " userIDList:").concat(e)), this.request({
						protocolName: Ml,
						requestData: {
							userIDList: e
						}
					}).then((function(r) {
						var a = r.data.peerReadTimeList;
						Gi.log("".concat(n, " ok. peerReadTimeList:").concat(a));
						for (var s = "", i = t.getModule(Ku), c = 0; c < e
							.length; c++) s += "".concat(e[c], "-").concat(a[c],
							" "), a[c] > 0 && i.recordPeerReadTime("C2C".concat(
							e[c]), a[c]);
						o.setNetworkType(t.getNetworkType()).setMessage(s).end()
					})).catch((function(e) {
						t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								r = n[0],
								a = n[1];
							o.setError(e, r, a).end()
						})), Gi.warn("".concat(n, " failed. error:"), e)
					}))
				}
			}]), n
		}(ol),
		K_ = Math.floor,
		B_ = function(e, t) {
			var n = e.length,
				o = K_(n / 2);
			return n < 8 ? j_(e, t) : H_(B_(e.slice(0, o), t), B_(e.slice(o), t), t)
		},
		j_ = function(e, t) {
			for (var n, o, r = e.length, a = 1; a < r;) {
				for (o = a, n = e[a]; o && t(e[o - 1], n) > 0;) e[o] = e[--o];
				o !== a++ && (e[o] = n)
			}
			return e
		},
		H_ = function(e, t, n) {
			for (var o = e.length, r = t.length, a = 0, s = 0, i = []; a < o || s < r;) a < o && s < r ? i.push(
				n(e[a], t[s]) <= 0 ? e[a++] : t[s++]) : i.push(a < o ? e[a++] : t[s++]);
			return i
		},
		$_ = B_,
		Y_ = Ct.match(/firefox\/(\d+)/i),
		z_ = !!Y_ && +Y_[1],
		W_ = /MSIE|Trident/.test(Ct),
		J_ = Ct.match(/AppleWebKit\/(\d+)\./),
		X_ = !!J_ && +J_[1],
		Q_ = [],
		Z_ = Q_.sort,
		em = A((function() {
			Q_.sort(void 0)
		})),
		tm = A((function() {
			Q_.sort(null)
		})),
		nm = Bt("sort"),
		om = !A((function() {
			if (Lt) return Lt < 70;
			if (!(z_ && z_ > 3)) {
				if (W_) return !0;
				if (X_) return X_ < 603;
				var e, t, n, o, r = "";
				for (e = 65; e < 76; e++) {
					switch (t = String.fromCharCode(e), e) {
						case 66:
						case 69:
						case 70:
						case 72:
							n = 3;
							break;
						case 68:
						case 71:
							n = 4;
							break;
						default:
							n = 2
					}
					for (o = 0; o < 47; o++) Q_.push({
						k: t + o,
						v: n
					})
				}
				for (Q_.sort((function(e, t) {
						return t.v - e.v
					})), o = 0; o < Q_.length; o++) t = Q_[o].k.charAt(0), r.charAt(r.length - 1) !==
					t && (r += t);
				return "DGBEFHACIJK" !== r
			}
		}));
	nt({
		target: "Array",
		proto: !0,
		forced: em || !tm || !nm || !om
	}, {
		sort: function(e) {
			void 0 !== e && Et(e);
			var t = B(this);
			if (om) return void 0 === e ? Z_.call(t) : Z_.call(t, e);
			var n, o, r = [],
				a = we(t.length);
			for (o = 0; o < a; o++) o in t && r.push(t[o]);
			for (n = (r = $_(r, function(e) {
					return function(t, n) {
						return void 0 === n ? -1 : void 0 === t ? 1 : void 0 !== e ? +e(
							t, n) || 0 : String(t) > String(n) ? 1 : -1
					}
				}(e))).length, o = 0; o < n;) t[o] = r[o++];
			for (; o < a;) delete t[o++];
			return t
		}
	});
	var rm = Kt.findIndex,
		am = !0;
	"findIndex" in [] && Array(1).findIndex((function() {
		am = !1
	})), nt({
		target: "Array",
		proto: !0,
		forced: am
	}, {
		findIndex: function(e) {
			return rm(this, e, arguments.length > 1 ? arguments[1] : void 0)
		}
	}), rr("findIndex");
	var sm = function() {
			function e(t) {
				o(this, e), this.list = new Map, this._className = "MessageListHandler", this
					._latestMessageSentByPeerMap = new Map, this._latestMessageSentByMeMap = new Map, this
					._groupLocalLastMessageSequenceMap = new Map
			}
			return a(e, [{
				key: "getLocalOldestMessageByConversationID",
				value: function(e) {
					if (!e) return null;
					if (!this.list.has(e)) return null;
					var t = this.list.get(e).values();
					return t ? t.next().value : null
				}
			}, {
				key: "pushIn",
				value: function(e) {
					var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
						n = e.conversationID,
						o = e.ID,
						r = !0;
					this.list.has(n) || this.list.set(n, new Map);
					var a = this.list.get(n).has(o);
					if (a) {
						var s = this.list.get(n).get(o);
						if (!t || !0 === s.isModified) return r = !1
					}
					return this.list.get(n).set(o, e), this._setLatestMessageSentByPeer(n, e),
						this._setLatestMessageSentByMe(n, e), this
						._setGroupLocalLastMessageSequence(n, e), r
				}
			}, {
				key: "unshift",
				value: function(e) {
					var t;
					if (Bi(e)) {
						if (e.length > 0) {
							t = e[0].conversationID;
							var n = e.length;
							this._unshiftMultipleMessages(e), this
								._setGroupLocalLastMessageSequence(t, e[n - 1])
						}
					} else t = e.conversationID, this._unshiftSingleMessage(e), this
						._setGroupLocalLastMessageSequence(t, e);
					if (t && t.startsWith(Zn.CONV_C2C)) {
						var o = Array.from(this.list.get(t).values()),
							r = o.length;
						if (0 === r) return;
						for (var a = r - 1; a >= 0; a--)
							if ("out" === o[a].flow) {
								this._setLatestMessageSentByMe(t, o[a]);
								break
							} for (var s = r - 1; s >= 0; s--)
							if ("in" === o[s].flow) {
								this._setLatestMessageSentByPeer(t, o[s]);
								break
							}
					}
				}
			}, {
				key: "_unshiftSingleMessage",
				value: function(e) {
					var t = e.conversationID,
						n = e.ID;
					if (!this.list.has(t)) return this.list.set(t, new Map), void this.list.get(
						t).set(n, e);
					var o = Array.from(this.list.get(t));
					o.unshift([n, e]), this.list.set(t, new Map(o))
				}
			}, {
				key: "_unshiftMultipleMessages",
				value: function(e) {
					for (var t = e.length, n = [], o = e[0].conversationID, r = this.list.has(
							o) ? Array.from(this.list.get(o)) : [], a = 0; a < t; a++) n.push([
						e[a].ID, e[a]
					]);
					this.list.set(o, new Map(n.concat(r)))
				}
			}, {
				key: "remove",
				value: function(e) {
					var t = e.conversationID,
						n = e.ID;
					this.list.has(t) && this.list.get(t).delete(n)
				}
			}, {
				key: "revoke",
				value: function(e, t, n) {
					if (Gi.debug("revoke message", e, t, n), this.list.has(e)) {
						var o, r = E(this.list.get(e));
						try {
							for (r.s(); !(o = r.n()).done;) {
								var a = m(o.value, 2)[1];
								if (a.sequence === t && !a.isRevoked && (ji(n) || a.random ===
										n)) return a.isRevoked = !0, a
							}
						} catch (s) {
							r.e(s)
						} finally {
							r.f()
						}
					}
					return null
				}
			}, {
				key: "removeByConversationID",
				value: function(e) {
					this.list.has(e) && (this.list.delete(e), this._latestMessageSentByPeerMap
						.delete(e), this._latestMessageSentByMeMap.delete(e))
				}
			}, {
				key: "updateMessageIsPeerReadProperty",
				value: function(e, t) {
					var n = [];
					if (this.list.has(e)) {
						var o, r = E(this.list.get(e));
						try {
							for (r.s(); !(o = r.n()).done;) {
								var a = m(o.value, 2)[1];
								a.time <= t && !a.isPeerRead && "out" === a.flow && (a
									.isPeerRead = !0, n.push(a))
							}
						} catch (s) {
							r.e(s)
						} finally {
							r.f()
						}
						Gi.log("".concat(this._className,
							".updateMessageIsPeerReadProperty conversationID:").concat(
							e, " peerReadTime:").concat(t, " count:").concat(n.length))
					}
					return n
				}
			}, {
				key: "updateMessageIsModifiedProperty",
				value: function(e) {
					var t = e.conversationID,
						n = e.ID;
					if (this.list.has(t)) {
						var o = this.list.get(t).get(n);
						o && (o.isModified = !0)
					}
				}
			}, {
				key: "hasLocalMessageList",
				value: function(e) {
					return this.list.has(e)
				}
			}, {
				key: "getLocalMessageList",
				value: function(e) {
					return this.hasLocalMessageList(e) ? v(this.list.get(e).values()) : []
				}
			}, {
				key: "hasLocalMessage",
				value: function(e, t) {
					return !!this.hasLocalMessageList(e) && this.list.get(e).has(t)
				}
			}, {
				key: "getLocalMessage",
				value: function(e, t) {
					return this.hasLocalMessage(e, t) ? this.list.get(e).get(t) : null
				}
			}, {
				key: "_setLatestMessageSentByPeer",
				value: function(e, t) {
					e.startsWith(Zn.CONV_C2C) && "in" === t.flow && this
						._latestMessageSentByPeerMap.set(e, t)
				}
			}, {
				key: "_setLatestMessageSentByMe",
				value: function(e, t) {
					e.startsWith(Zn.CONV_C2C) && "out" === t.flow && this
						._latestMessageSentByMeMap.set(e, t)
				}
			}, {
				key: "_setGroupLocalLastMessageSequence",
				value: function(e, t) {
					e.startsWith(Zn.CONV_GROUP) && this._groupLocalLastMessageSequenceMap.set(e,
						t.sequence)
				}
			}, {
				key: "getLatestMessageSentByPeer",
				value: function(e) {
					return this._latestMessageSentByPeerMap.get(e)
				}
			}, {
				key: "getLatestMessageSentByMe",
				value: function(e) {
					return this._latestMessageSentByMeMap.get(e)
				}
			}, {
				key: "getGroupLocalLastMessageSequence",
				value: function(e) {
					return this._groupLocalLastMessageSequenceMap.get(e) || 0
				}
			}, {
				key: "modifyMessageSentByPeer",
				value: function(e, t) {
					var n = this.list.get(e);
					if (!Tc(n)) {
						var o = Array.from(n.values()),
							r = o.length;
						if (0 !== r) {
							var a = null,
								s = null;
							t && (s = t);
							for (var i = 0, c = !1, u = r - 1; u >= 0; u--) "in" === o[u]
								.flow && (null === s ? s = o[u] : ((a = o[u]).nick !== s.nick &&
									(a.setNickAndAvatar({
										nick: s.nick
									}), c = !0), a.avatar !== s.avatar && (a
										.setNickAndAvatar({
											avatar: s.avatar
										}), c = !0), c && (i += 1)));
							Gi.log("".concat(this._className,
								".modifyMessageSentByPeer conversationID:").concat(e,
								" count:").concat(i))
						}
					}
				}
			}, {
				key: "modifyMessageSentByMe",
				value: function(e) {
					var t = e.conversationID,
						n = e.latestNick,
						o = e.latestAvatar,
						r = this.list.get(t);
					if (!Tc(r)) {
						var a = Array.from(r.values()),
							s = a.length;
						if (0 !== s) {
							for (var i = null, c = 0, u = !1, l = s - 1; l >= 0; l--) "out" ===
								a[l].flow && ((i = a[l]).nick !== n && (i.setNickAndAvatar({
									nick: n
								}), u = !0), i.avatar !== o && (i.setNickAndAvatar({
									avatar: o
								}), u = !0), u && (c += 1));
							Gi.log("".concat(this._className,
								".modifyMessageSentByMe conversationID:").concat(t,
								" count:").concat(c))
						}
					}
				}
			}, {
				key: "traversal",
				value: function() {
					if (0 !== this.list.size && -1 === Gi.getLevel()) {
						console.group("conversationID-messageCount");
						var e, t = E(this.list);
						try {
							for (t.s(); !(e = t.n()).done;) {
								var n = m(e.value, 2),
									o = n[0],
									r = n[1];
								console.log("".concat(o, "-").concat(r.size))
							}
						} catch (a) {
							t.e(a)
						} finally {
							t.f()
						}
						console.groupEnd()
					}
				}
			}, {
				key: "reset",
				value: function() {
					this.list.clear(), this._latestMessageSentByPeerMap.clear(), this
						._latestMessageSentByMeMap.clear(), this
						._groupLocalLastMessageSequenceMap.clear()
				}
			}]), e
		}(),
		im = {
			CONTEXT_A2KEY_AND_TINYID_UPDATED: "_a2KeyAndTinyIDUpdated",
			CLOUD_CONFIG_UPDATED: "_cloudConfigUpdated"
		};

	function cm(e) {
		this.mixin(e)
	}
	cm.mixin = function(e) {
		var t = e.prototype || e;
		t._isReady = !1, t.ready = function(e) {
			var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
			if (e) return this._isReady ? void(t ? e.call(this) : setTimeout(e, 1)) : (this
				._readyQueue = this._readyQueue || [], void this._readyQueue.push(e))
		}, t.triggerReady = function() {
			var e = this;
			this._isReady = !0, setTimeout((function() {
				var t = e._readyQueue;
				e._readyQueue = [], t && t.length > 0 && t.forEach((function(e) {
					e.call(this)
				}), e)
			}), 1)
		}, t.resetReady = function() {
			this._isReady = !1, this._readyQueue = []
		}, t.isReady = function() {
			return this._isReady
		}
	};
	var um = ["jpg", "jpeg", "gif", "png", "bmp"],
		lm = ["mp4"],
		dm = 1,
		pm = 2,
		gm = 3,
		hm = 255,
		fm = function() {
			function e(t) {
				var n = this;
				o(this, e), Tc(t) || (this.userID = t.userID || "", this.nick = t.nick || "", this.gender = t
					.gender || "", this.birthday = t.birthday || 0, this.location = t.location || "", this
					.selfSignature = t.selfSignature || "", this.allowType = t.allowType || Zn
					.ALLOW_TYPE_ALLOW_ANY, this.language = t.language || 0, this.avatar = t.avatar || "",
					this.messageSettings = t.messageSettings || 0, this.adminForbidType = t
					.adminForbidType || Zn.FORBID_TYPE_NONE, this.level = t.level || 0, this.role = t
					.role || 0, this.lastUpdatedTime = 0, this.profileCustomField = [], Tc(t
						.profileCustomField) || t.profileCustomField.forEach((function(e) {
						n.profileCustomField.push({
							key: e.key,
							value: e.value
						})
					})))
			}
			return a(e, [{
				key: "validate",
				value: function(e) {
					var t = !0,
						n = "";
					if (Tc(e)) return {
						valid: !1,
						tips: "empty options"
					};
					if (e.profileCustomField)
						for (var o = e.profileCustomField.length, r = null, a = 0; a < o; a++) {
							if (r = e.profileCustomField[a], !xi(r.key) || -1 === r.key.indexOf(
									"Tag_Profile_Custom")) return {
								valid: !1,
								tips: "自定义资料字段的前缀必须是 Tag_Profile_Custom"
							};
							if (!xi(r.value)) return {
								valid: !1,
								tips: "自定义资料字段的 value 必须是字符串"
							}
						}
					for (var s in e)
						if (Object.prototype.hasOwnProperty.call(e, s)) {
							if ("profileCustomField" === s) continue;
							if (Tc(e[s]) && !xi(e[s]) && !qi(e[s])) {
								n = "key:" + s + ", invalid value:" + e[s], t = !1;
								continue
							}
							switch (s) {
								case "nick":
									xi(e[s]) || (n = "nick should be a string", t = !1), ec(e[
										s]) > 500 && (n =
										"nick name limited: must less than or equal to "
										.concat(500, " bytes, current size: ").concat(ec(e[
											s]), " bytes"), t = !1);
									break;
								case "gender":
									rc(a_, e.gender) || (n = "key:gender, invalid value:" + e
										.gender, t = !1);
									break;
								case "birthday":
									qi(e.birthday) || (n = "birthday should be a number", t = !
										1);
									break;
								case "location":
									xi(e.location) || (n = "location should be a string", t = !
										1);
									break;
								case "selfSignature":
									xi(e.selfSignature) || (n =
										"selfSignature should be a string", t = !1);
									break;
								case "allowType":
									rc(i_, e.allowType) || (n =
										"key:allowType, invalid value:" + e.allowType, t = !
										1);
									break;
								case "language":
									qi(e.language) || (n = "language should be a number", t = !
										1);
									break;
								case "avatar":
									xi(e.avatar) || (n = "avatar should be a string", t = !1);
									break;
								case "messageSettings":
									0 !== e.messageSettings && 1 !== e.messageSettings && (n =
										"messageSettings should be 0 or 1", t = !1);
									break;
								case "adminForbidType":
									rc(s_, e.adminForbidType) || (n =
										"key:adminForbidType, invalid value:" + e
										.adminForbidType, t = !1);
									break;
								case "level":
									qi(e.level) || (n = "level should be a number", t = !1);
									break;
								case "role":
									qi(e.role) || (n = "role should be a number", t = !1);
									break;
								default:
									n = "unknown key:" + s + "  " + e[s], t = !1
							}
						} return {
						valid: t,
						tips: n
					}
				}
			}]), e
		}(),
		_m = function e(t) {
			o(this, e), this.value = t, this.next = null
		},
		mm = function() {
			function e(t) {
				o(this, e), this.MAX_LENGTH = t, this.pTail = null, this.pNodeToDel = null, this.map = new Map,
					Gi.debug("SinglyLinkedList init MAX_LENGTH:".concat(this.MAX_LENGTH))
			}
			return a(e, [{
				key: "set",
				value: function(e) {
					var t = new _m(e);
					if (this.map.size < this.MAX_LENGTH) null === this.pTail ? (this.pTail = t,
							this.pNodeToDel = t) : (this.pTail.next = t, this.pTail = t), this
						.map.set(e, 1);
					else {
						var n = this.pNodeToDel;
						this.pNodeToDel = this.pNodeToDel.next, this.map.delete(n.value), n
							.next = null, n = null, this.pTail.next = t, this.pTail = t, this
							.map.set(e, 1)
					}
				}
			}, {
				key: "has",
				value: function(e) {
					return this.map.has(e)
				}
			}, {
				key: "delete",
				value: function(e) {
					this.has(e) && this.map.delete(e)
				}
			}, {
				key: "tail",
				value: function() {
					return this.pTail
				}
			}, {
				key: "size",
				value: function() {
					return this.map.size
				}
			}, {
				key: "data",
				value: function() {
					return Array.from(this.map.keys())
				}
			}, {
				key: "reset",
				value: function() {
					for (var e; null !== this.pNodeToDel;) e = this.pNodeToDel, this
						.pNodeToDel = this.pNodeToDel.next, e.next = null, e = null;
					this.pTail = null, this.map.clear()
				}
			}]), e
		}(),
		vm = ["groupID", "name", "avatar", "type", "introduction", "notification", "ownerID", "selfInfo",
			"createTime", "infoSequence", "lastInfoTime", "lastMessage", "nextMessageSeq", "memberNum",
			"maxMemberNum", "memberList", "joinOption", "groupCustomField", "muteAllMembers"
		],
		Mm = function() {
			function e(t) {
				o(this, e), this.groupID = "", this.name = "", this.avatar = "", this.type = "", this
					.introduction = "", this.notification = "", this.ownerID = "", this.createTime = "", this
					.infoSequence = "", this.lastInfoTime = "", this.selfInfo = {
						messageRemindType: "",
						joinTime: "",
						nameCard: "",
						role: ""
					}, this.lastMessage = {
						lastTime: "",
						lastSequence: "",
						fromAccount: "",
						messageForShow: ""
					}, this.nextMessageSeq = "", this.memberNum = "", this.memberCount = "", this.maxMemberNum =
					"", this.maxMemberCount = "", this.joinOption = "", this.groupCustomField = [], this
					.muteAllMembers = void 0, this._initGroup(t)
			}
			return a(e, [{
				key: "memberNum",
				get: function() {
					return Gi.warn("！！！v2.8.0起弃用memberNum，请使用 memberCount"), this.memberCount
				},
				set: function(e) {}
			}, {
				key: "maxMemberNum",
				get: function() {
					return Gi.warn("！！！v2.8.0起弃用maxMemberNum，请使用 maxMemberCount"), this
						.maxMemberCount
				},
				set: function(e) {}
			}, {
				key: "_initGroup",
				value: function(e) {
					for (var t in e) vm.indexOf(t) < 0 || ("selfInfo" !== t ? ("memberNum" ===
							t && (this.memberCount = e[t]), "maxMemberNum" === t && (this
								.maxMemberCount = e[t]), this[t] = e[t]) : this
						.updateSelfInfo(e[t]))
				}
			}, {
				key: "updateGroup",
				value: function(e) {
					var t = JSON.parse(JSON.stringify(e));
					t.lastMsgTime && (this.lastMessage.lastTime = t.lastMsgTime), ji(t
							.muteAllMembers) || ("On" === t.muteAllMembers ? t
							.muteAllMembers = !0 : t.muteAllMembers = !1), t.groupCustomField &&
						uc(this.groupCustomField, t.groupCustomField), ji(t.memberNum) || (this
							.memberCount = t.memberNum), ji(t.maxMemberNum) || (this
							.maxMemberCount = t.maxMemberNum), Qi(this, t, ["members",
							"errorCode", "lastMsgTime", "groupCustomField", "memberNum",
							"maxMemberNum"
						])
				}
			}, {
				key: "updateSelfInfo",
				value: function(e) {
					var t = e.nameCard,
						n = e.joinTime,
						o = e.role,
						r = e.messageRemindType;
					Qi(this.selfInfo, {
						nameCard: t,
						joinTime: n,
						role: o,
						messageRemindType: r
					}, [], ["", null, void 0, 0, NaN])
				}
			}, {
				key: "setSelfNameCard",
				value: function(e) {
					this.selfInfo.nameCard = e
				}
			}]), e
		}(),
		ym = function(e, t) {
			if (ji(t)) return "";
			switch (e) {
				case Zn.MSG_TEXT:
					return t.text;
				case Zn.MSG_IMAGE:
					return "[图片]";
				case Zn.MSG_GEO:
					return "[位置]";
				case Zn.MSG_AUDIO:
					return "[语音]";
				case Zn.MSG_VIDEO:
					return "[视频]";
				case Zn.MSG_FILE:
					return "[文件]";
				case Zn.MSG_CUSTOM:
					return "[自定义消息]";
				case Zn.MSG_GRP_TIP:
					return "[群提示消息]";
				case Zn.MSG_GRP_SYS_NOTICE:
					return "[群系统通知]";
				case Zn.MSG_FACE:
					return "[动画表情]";
				case Zn.MSG_MERGER:
					return "[聊天记录]";
				default:
					return ""
			}
		},
		Im = function(e) {
			return ji(e) ? {
				lastTime: 0,
				lastSequence: 0,
				fromAccount: 0,
				messageForShow: "",
				payload: null,
				type: "",
				isRevoked: !1,
				cloudCustomData: "",
				onlineOnlyFlag: !1
			} : e instanceof A_ ? {
				lastTime: e.time || 0,
				lastSequence: e.sequence || 0,
				fromAccount: e.from || "",
				messageForShow: ym(e.type, e.payload),
				payload: e.payload || null,
				type: e.type || null,
				isRevoked: e.isRevoked || !1,
				cloudCustomData: e.cloudCustomData || "",
				onlineOnlyFlag: !!$i(e.getOnlineOnlyFlag) && e.getOnlineOnlyFlag()
			} : t(t({}, e), {}, {
				messageForShow: ym(e.type, e.payload)
			})
		},
		Sm = function() {
			function e(t) {
				o(this, e), this.conversationID = t.conversationID || "", this.unreadCount = t.unreadCount || 0,
					this.type = t.type || "", this.lastMessage = Im(t.lastMessage), t.lastMsgTime && (this
						.lastMessage.lastTime = t.lastMsgTime), this._isInfoCompleted = !1, this.peerReadTime =
					t.peerReadTime || 0, this.groupAtInfoList = [], this.remark = "", this._initProfile(t)
			}
			return a(e, [{
				key: "toAccount",
				get: function() {
					return this.conversationID.replace("C2C", "").replace("GROUP", "")
				}
			}, {
				key: "subType",
				get: function() {
					return this.groupProfile ? this.groupProfile.type : ""
				}
			}, {
				key: "_initProfile",
				value: function(e) {
					var t = this;
					Object.keys(e).forEach((function(n) {
							switch (n) {
								case "userProfile":
									t.userProfile = e.userProfile;
									break;
								case "groupProfile":
									t.groupProfile = e.groupProfile
							}
						})), ji(this.userProfile) && this.type === Zn.CONV_C2C ? this
						.userProfile = new fm({
							userID: e.conversationID.replace("C2C", "")
						}) : ji(this.groupProfile) && this.type === Zn.CONV_GROUP && (this
							.groupProfile = new Mm({
								groupID: e.conversationID.replace("GROUP", "")
							}))
				}
			}, {
				key: "updateUnreadCount",
				value: function(e, t) {
					ji(e) || (dc(this.subType) ? this.unreadCount = 0 : t && this.type === Zn
						.CONV_GROUP ? this.unreadCount = e : this.unreadCount = this
						.unreadCount + e)
				}
			}, {
				key: "updateLastMessage",
				value: function(e) {
					this.lastMessage = Im(e)
				}
			}, {
				key: "updateGroupAtInfoList",
				value: function(e) {
					var t, n = (M(t = e.groupAtType) || y(t) || I(t) || T()).slice(0); - 1 !== n
						.indexOf(Zn.CONV_AT_ME) && -1 !== n.indexOf(Zn.CONV_AT_ALL) && (n = [Zn
							.CONV_AT_ALL_AT_ME
						]);
					var o = {
						from: e.from,
						groupID: e.groupID,
						messageSequence: e.sequence,
						atTypeArray: n,
						__random: e.__random,
						__sequence: e.__sequence
					};
					this.groupAtInfoList.push(o), Gi.debug(
						"Conversation.updateGroupAtInfoList conversationID:".concat(this
							.conversationID), this.groupAtInfoList)
				}
			}, {
				key: "clearGroupAtInfoList",
				value: function() {
					this.groupAtInfoList.length = 0
				}
			}, {
				key: "reduceUnreadCount",
				value: function() {
					this.unreadCount >= 1 && (this.unreadCount -= 1)
				}
			}, {
				key: "isLastMessageRevoked",
				value: function(e) {
					var t = e.sequence,
						n = e.time;
					return this.type === Zn.CONV_C2C && t === this.lastMessage.lastSequence &&
						n === this.lastMessage.lastTime || this.type === Zn.CONV_GROUP && t ===
						this.lastMessage.lastSequence
				}
			}, {
				key: "setLastMessageRevoked",
				value: function(e) {
					this.lastMessage.isRevoked = e
				}
			}]), e
		}(),
		Tm = function(e) {
			i(r, e);
			var n = _(r);

			function r(e) {
				var t;
				return o(this, r), (t = n.call(this, e))._className = "ConversationModule", cm.mixin(h(t)), t
					._messageListHandler = new sm, t.singlyLinkedList = new mm(100), t._pagingStatus = vu
					.NOT_START, t._pagingTimeStamp = 0, t._conversationMap = new Map, t._tmpGroupList = [], t
					._tmpGroupAtTipsList = [], t._peerReadTimeMap = new Map, t._completedMap = new Map, t
					._roamingMessageKeyMap = new Map, t._initListeners(), t
			}
			return a(r, [{
				key: "_initListeners",
				value: function() {
					this.getInnerEmitterInstance().on(im.CONTEXT_A2KEY_AND_TINYID_UPDATED, this
						._initLocalConversationList, this)
				}
			}, {
				key: "onCheckTimer",
				value: function(e) {
					e % 60 == 0 && this._messageListHandler.traversal()
				}
			}, {
				key: "_initLocalConversationList",
				value: function() {
					var e = this,
						t = new Lp(ig);
					Gi.log("".concat(this._className, "._initLocalConversationList."));
					var n = "",
						o = this._getStorageConversationList();
					if (o) {
						for (var r = o.length, a = 0; a < r; a++) {
							var s = o[a];
							if (s && s.groupProfile) {
								var i = s.groupProfile.type;
								if (dc(i)) continue
							}
							this._conversationMap.set(o[a].conversationID, new Sm(o[a]))
						}
						this._emitConversationUpdate(!0, !1), n = "count:".concat(r)
					} else n = "count:0";
					t.setNetworkType(this.getNetworkType()).setMessage(n).end(), this.getModule(
						Fu) || this.triggerReady(), this.ready((function() {
						e._tmpGroupList.length > 0 && (e
							.updateConversationGroupProfile(e._tmpGroupList), e
							._tmpGroupList.length = 0)
					})), this._syncConversationList()
				}
			}, {
				key: "onMessageSent",
				value: function(e) {
					this._onSendOrReceiveMessage(e.conversationOptionsList, !0)
				}
			}, {
				key: "onNewMessage",
				value: function(e) {
					this._onSendOrReceiveMessage(e.conversationOptionsList, e.isInstantMessage)
				}
			}, {
				key: "_onSendOrReceiveMessage",
				value: function(e) {
					var t = this,
						n = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
					this._isReady ? 0 !== e.length && (this._getC2CPeerReadTime(e), this
							._updateLocalConversationList(e, !1, n), this
							._setStorageConversationList(), this._emitConversationUpdate()) :
						this.ready((function() {
							t._onSendOrReceiveMessage(e, n)
						}))
				}
			}, {
				key: "updateConversationGroupProfile",
				value: function(e) {
					var t = this;
					Bi(e) && 0 === e.length || (0 !== this._conversationMap.size ? (e.forEach((
							function(e) {
								var n = "GROUP".concat(e.groupID);
								if (t._conversationMap.has(n)) {
									var o = t._conversationMap.get(n);
									o.groupProfile = e, o.lastMessage.lastSequence <
										e.nextMessageSeq && (o.lastMessage
											.lastSequence = e.nextMessageSeq - 1), o
										.subType || (o.subType = e.type)
								}
							})), this._emitConversationUpdate(!0, !1)) : this
						._tmpGroupList = e)
				}
			}, {
				key: "_updateConversationUserProfile",
				value: function(e) {
					var t = this;
					e.data.forEach((function(e) {
						var n = "C2C".concat(e.userID);
						t._conversationMap.has(n) && (t._conversationMap.get(n)
							.userProfile = e)
					})), this._emitConversationUpdate(!0, !1)
				}
			}, {
				key: "onMessageRevoked",
				value: function(e) {
					var t = this;
					if (0 !== e.length) {
						var n = null,
							o = !1;
						e.forEach((function(e) {
							(n = t._conversationMap.get(e.conversationID)) && n
								.isLastMessageRevoked(e) && (o = !0, n
									.setLastMessageRevoked(!0))
						})), o && this._emitConversationUpdate(!0, !1)
					}
				}
			}, {
				key: "onMessageDeleted",
				value: function(e) {
					if (0 !== e.length) {
						e.forEach((function(e) {
							e.isDeleted = !0
						}));
						for (var t = e[0].conversationID, n = this._messageListHandler
								.getLocalMessageList(t), o = {}, r = n.length - 1; r > 0; r--)
							if (!n[r].isDeleted) {
								o = n[r];
								break
							} var a = this._conversationMap.get(t);
						if (a) {
							var s = !1;
							a.lastMessage.lastSequence !== o.sequence && a.lastMessage
								.lastTime !== o.time && (a.updateLastMessage(o), s = !0, Gi.log(
									"".concat(this._className,
										".onMessageDeleted. update conversationID:").concat(
										t, " with lastMessage:"), a.lastMessage)), t.startsWith(
									Zn.CONV_C2C) && this.updateUnreadCount(t), s && this
								._emitConversationUpdate(!0, !1)
						}
					}
				}
			}, {
				key: "onNewGroupAtTips",
				value: function(e) {
					var t = this,
						n = e.dataList,
						o = null;
					n.forEach((function(e) {
							e.groupAtTips ? o = e.groupAtTips : e.elements && (o = e
									.elements), o.__random = e.random, o.__sequence = e
								.clientSequence, t._tmpGroupAtTipsList.push(o)
						})), Gi.debug("".concat(this._className, ".onNewGroupAtTips isReady:")
							.concat(this._isReady), this._tmpGroupAtTipsList), this._isReady &&
						this._handleGroupAtTipsList()
				}
			}, {
				key: "_handleGroupAtTipsList",
				value: function() {
					var e = this;
					if (0 !== this._tmpGroupAtTipsList.length) {
						var t = !1;
						this._tmpGroupAtTipsList.forEach((function(n) {
								var o = n.groupID;
								if (n.from !== e.getMyUserID()) {
									var r = e._conversationMap.get("".concat(Zn
										.CONV_GROUP).concat(o));
									r && (r.updateGroupAtInfoList(n), t = !0)
								}
							})), t && this._emitConversationUpdate(!0, !1), this
							._tmpGroupAtTipsList.length = 0
					}
				}
			}, {
				key: "_getC2CPeerReadTime",
				value: function(e) {
					var t = this,
						n = [];
					if (e.forEach((function(e) {
							t._conversationMap.has(e.conversationID) || e.type !== Zn
								.CONV_C2C || n.push(e.conversationID.replace(Zn
									.CONV_C2C, ""))
						})), n.length > 0) {
						Gi.debug("".concat(this._className, "._getC2CPeerReadTime userIDList:")
							.concat(n));
						var o = this.getModule(Fu);
						o && o.getRemotePeerReadTime(n)
					}
				}
			}, {
				key: "_getStorageConversationList",
				value: function() {
					return this.getModule(ju).getItem("conversationMap")
				}
			}, {
				key: "_setStorageConversationList",
				value: function() {
					var e = this.getLocalConversationList().slice(0, 20).map((function(e) {
						return {
							conversationID: e.conversationID,
							type: e.type,
							subType: e.subType,
							lastMessage: e.lastMessage,
							groupProfile: e.groupProfile,
							userProfile: e.userProfile
						}
					}));
					this.getModule(ju).setItem("conversationMap", e)
				}
			}, {
				key: "_emitConversationUpdate",
				value: function() {
					var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0],
						t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],
						n = v(this._conversationMap.values());
					if (t) {
						var o = this.getModule(qu);
						o && o.updateGroupLastMessage(n)
					}
					e && this.emitOuterEvent(Qn.CONVERSATION_LIST_UPDATED, n)
				}
			}, {
				key: "getLocalConversationList",
				value: function() {
					return v(this._conversationMap.values())
				}
			}, {
				key: "getLocalConversation",
				value: function(e) {
					return this._conversationMap.get(e)
				}
			}, {
				key: "_syncConversationList",
				value: function() {
					var e = this,
						t = new Lp(cg);
					return this._pagingStatus === vu.NOT_START && this._conversationMap.clear(),
						this._pagingGetConversationList().then((function(n) {
							return e._pagingStatus = vu.RESOLVED, e
								._setStorageConversationList(), e
								._handleC2CPeerReadTime(), e.checkAndPatchRemark(), t
								.setMessage(e._conversationMap.size).setNetworkType(e
									.getNetworkType()).end(), n
						})).catch((function(n) {
							return e._pagingStatus = vu.REJECTED, t.setMessage(e
								._pagingTimeStamp), e.probeNetwork().then((function(
								e) {
								var o = m(e, 2),
									r = o[0],
									a = o[1];
								t.setError(n, r, a).end()
							})), x_(n)
						}))
				}
			}, {
				key: "_pagingGetConversationList",
				value: function() {
					var e = this,
						t = "".concat(this._className, "._pagingGetConversationList");
					return this._pagingStatus = vu.PENDING, this.request({
						protocolName: Il,
						requestData: {
							fromAccount: this.getMyUserID(),
							timeStamp: this._pagingTimeStamp,
							orderType: 1,
							messageAssistFlags: 4
						}
					}).then((function(n) {
						var o = n.data,
							r = o.completeFlag,
							a = o.conversations,
							s = void 0 === a ? [] : a,
							i = o.timeStamp;
						if (Gi.log("".concat(t, " completeFlag:").concat(r,
								" count:").concat(s.length)), s.length > 0) {
							var c = e._getConversationOptions(s);
							e._updateLocalConversationList(c, !0)
						}
						if (e._isReady) e._emitConversationUpdate();
						else {
							if (!e.isLoggedIn()) return q_();
							e.triggerReady()
						}
						return e._pagingTimeStamp = i, 1 !== r ? e
							._pagingGetConversationList() : (e
								._handleGroupAtTipsList(), q_())
					})).catch((function(n) {
						throw e.isLoggedIn() && (e._isReady || (Gi.warn("".concat(t,
							" failed. error:"), n), e.triggerReady())), n
					}))
				}
			}, {
				key: "_updateLocalConversationList",
				value: function(e, t, n) {
					var o, r = Date.now();
					o = this._getTmpConversationListMapping(e, t, n), this._conversationMap =
						new Map(this._sortConversationList([].concat(v(o
							.toBeUpdatedConversationList), v(this._conversationMap)))), t ||
						this._updateUserOrGroupProfile(o.newConversationList), Gi.debug(""
							.concat(this._className, "._updateLocalConversationList cost ")
							.concat(Date.now() - r, " ms"))
				}
			}, {
				key: "_getTmpConversationListMapping",
				value: function(e, t, n) {
					for (var o = [], r = [], a = this.getModule(qu), s = this.getModule(xu), i =
							0, c = e.length; i < c; i++) {
						var u = new Sm(e[i]),
							l = u.conversationID;
						if (this._conversationMap.has(l)) {
							var d = this._conversationMap.get(l),
								p = ["unreadCount", "allowType", "adminForbidType", "payload"];
							n || p.push("lastMessage"), Qi(d, u, p, [null, void 0, "", 0, NaN]),
								d.updateUnreadCount(u.unreadCount, t), n && (d.lastMessage
									.payload = e[i].lastMessage.payload), e[i].lastMessage && d
								.lastMessage.cloudCustomData !== e[i].lastMessage
								.cloudCustomData && (d.lastMessage.cloudCustomData = e[i]
									.lastMessage.cloudCustomData || ""), this._conversationMap
								.delete(l), o.push([l, d])
						} else {
							if (u.type === Zn.CONV_GROUP && a) {
								var g = u.groupProfile.groupID,
									h = a.getLocalGroupProfile(g);
								h && (u.groupProfile = h, u.updateUnreadCount(0))
							} else if (u.type === Zn.CONV_C2C) {
								var f = l.replace(Zn.CONV_C2C, "");
								s && s.isMyFriend(f) && (u.remark = s.getFriendRemark(f))
							}
							r.push(u), o.push([l, u])
						}
					}
					return {
						toBeUpdatedConversationList: o,
						newConversationList: r
					}
				}
			}, {
				key: "_sortConversationList",
				value: function(e) {
					return e.sort((function(e, t) {
						return t[1].lastMessage.lastTime - e[1].lastMessage.lastTime
					}))
				}
			}, {
				key: "_updateUserOrGroupProfile",
				value: function(e) {
					var t = this;
					if (0 !== e.length) {
						var n = [],
							o = [],
							r = this.getModule(Uu),
							a = this.getModule(qu);
						e.forEach((function(e) {
							if (e.type === Zn.CONV_C2C) n.push(e.toAccount);
							else if (e.type === Zn.CONV_GROUP) {
								var t = e.toAccount;
								a.hasLocalGroup(t) ? e.groupProfile = a
									.getLocalGroupProfile(t) : o.push(t)
							}
						})), Gi.log("".concat(this._className,
							"._updateUserOrGroupProfile c2cUserIDList:").concat(n,
							" groupIDList:").concat(o)), n.length > 0 && r.getUserProfile({
							userIDList: n
						}).then((function(e) {
							var n = e.data;
							Bi(n) ? n.forEach((function(e) {
									t._conversationMap.get("C2C".concat(e
										.userID)).userProfile = e
								})) : t._conversationMap.get("C2C".concat(n.userID))
								.userProfile = n
						})), o.length > 0 && a.getGroupProfileAdvance({
							groupIDList: o,
							responseFilter: {
								groupBaseInfoFilter: ["Type", "Name", "FaceUrl"]
							}
						}).then((function(e) {
							e.data.successGroupList.forEach((function(e) {
								var n = "GROUP".concat(e.groupID);
								if (t._conversationMap.has(n)) {
									var o = t._conversationMap.get(n);
									Qi(o.groupProfile, e, [], [null,
										void 0, "", 0, NaN
									]), !o.subType && e.type && (o
										.subType = e.type)
								}
							}))
						}))
					}
				}
			}, {
				key: "_getConversationOptions",
				value: function(e) {
					var t = [],
						n = e.filter((function(e) {
							var t = e.lastMsg;
							return Ki(t)
						})).map((function(e) {
							if (1 === e.type) {
								var n = {
									userID: e.userID,
									nick: e.c2CNick,
									avatar: e.c2CImage
								};
								return t.push(n), {
									conversationID: "C2C".concat(e.userID),
									type: "C2C",
									lastMessage: {
										lastTime: e.time,
										lastSequence: e.sequence,
										fromAccount: e.lastC2CMsgFromAccount,
										messageForShow: e.messageShow,
										type: e.lastMsg.elements[0] ? e.lastMsg
											.elements[0].type : null,
										payload: e.lastMsg.elements[0] ? e.lastMsg
											.elements[0].content : null,
										cloudCustomData: e.cloudCustomData || "",
										isRevoked: 8 === e.lastMessageFlag,
										onlineOnlyFlag: !1
									},
									userProfile: new fm(n),
									peerReadTime: e.c2cPeerReadTime
								}
							}
							return {
								conversationID: "GROUP".concat(e.groupID),
								type: "GROUP",
								lastMessage: {
									lastTime: e.time,
									lastSequence: e.messageReadSeq + e.unreadCount,
									fromAccount: e.msgGroupFromAccount,
									messageForShow: e.messageShow,
									type: e.lastMsg.elements[0] ? e.lastMsg.elements[0]
										.type : null,
									payload: e.lastMsg.elements[0] ? e.lastMsg.elements[
										0].content : null,
									cloudCustomData: e.cloudCustomData || "",
									isRevoked: 2 === e.lastMessageFlag,
									onlineOnlyFlag: !1
								},
								groupProfile: new Mm({
									groupID: e.groupID,
									name: e.groupNick,
									avatar: e.groupImage
								}),
								unreadCount: e.unreadCount,
								peerReadTime: 0
							}
						}));
					t.length > 0 && this.getModule(Uu).onConversationsProfileUpdated(t);
					return n
				}
			}, {
				key: "getLocalMessageList",
				value: function(e) {
					return this._messageListHandler.getLocalMessageList(e)
				}
			}, {
				key: "deleteLocalMessage",
				value: function(e) {
					e instanceof A_ && this._messageListHandler.remove(e)
				}
			}, {
				key: "getMessageList",
				value: function(e) {
					var t = this,
						n = e.conversationID,
						o = e.nextReqMessageID,
						r = e.count,
						a = "".concat(this._className, ".getMessageList"),
						s = this.getLocalConversation(n),
						i = "";
					if (s && s.groupProfile && (i = s.groupProfile.type), dc(i)) return Gi.log(
						"".concat(a, " not available in avchatroom. conversationID:")
						.concat(n)), q_({
						messageList: [],
						nextReqMessageID: "",
						isCompleted: !0
					});
					(ji(r) || r > 15) && (r = 15);
					var c = this._computeLeftCount({
						conversationID: n,
						nextReqMessageID: o
					});
					return Gi.log("".concat(a, " conversationID:").concat(n, " leftCount:")
							.concat(c, " count:").concat(r, " nextReqMessageID:").concat(o)),
						this._needGetHistory({
							conversationID: n,
							leftCount: c,
							count: r
						}) ? this.getHistoryMessages({
							conversationID: n,
							nextReqMessageID: o,
							count: 20
						}).then((function() {
							return c = t._computeLeftCount({
								conversationID: n,
								nextReqMessageID: o
							}), O_(t._computeResult({
								conversationID: n,
								nextReqMessageID: o,
								count: r,
								leftCount: c
							}))
						})) : (Gi.log("".concat(a,
								".getMessageList get message list from memory")), this
							.modifyMessageList(n), q_(this._computeResult({
								conversationID: n,
								nextReqMessageID: o,
								count: r,
								leftCount: c
							})))
				}
			}, {
				key: "_computeLeftCount",
				value: function(e) {
					var t = e.conversationID,
						n = e.nextReqMessageID;
					return n ? this._messageListHandler.getLocalMessageList(t).findIndex((
						function(e) {
							return e.ID === n
						})) : this._getMessageListSize(t)
				}
			}, {
				key: "_getMessageListSize",
				value: function(e) {
					return this._messageListHandler.getLocalMessageList(e).length
				}
			}, {
				key: "_needGetHistory",
				value: function(e) {
					var t = e.conversationID,
						n = e.leftCount,
						o = e.count,
						r = this.getLocalConversation(t),
						a = "";
					return r && r.groupProfile && (a = r.groupProfile.type), !pc(t) && !dc(a) &&
						(n < o && !this._completedMap.has(t))
				}
			}, {
				key: "_computeResult",
				value: function(e) {
					var t = e.conversationID,
						n = e.nextReqMessageID,
						o = e.count,
						r = e.leftCount,
						a = this._computeMessageList({
							conversationID: t,
							nextReqMessageID: n,
							count: o
						}),
						s = this._computeIsCompleted({
							conversationID: t,
							leftCount: r,
							count: o
						}),
						i = this._computeNextReqMessageID({
							messageList: a,
							isCompleted: s,
							conversationID: t
						}),
						c = "".concat(this._className, "._computeResult. conversationID:")
						.concat(t);
					return Gi.log("".concat(c, " leftCount:").concat(r, " count:").concat(o,
						" nextReqMessageID:").concat(i, " isCompleted:").concat(s)), {
						messageList: a,
						nextReqMessageID: i,
						isCompleted: s
					}
				}
			}, {
				key: "_computeMessageList",
				value: function(e) {
					var t = e.conversationID,
						n = e.nextReqMessageID,
						o = e.count,
						r = this._messageListHandler.getLocalMessageList(t),
						a = this._computeIndexEnd({
							nextReqMessageID: n,
							messageList: r
						}),
						s = this._computeIndexStart({
							indexEnd: a,
							count: o
						});
					return r.slice(s, a)
				}
			}, {
				key: "_computeNextReqMessageID",
				value: function(e) {
					var t = e.messageList,
						n = e.isCompleted,
						o = e.conversationID;
					if (!n) return 0 === t.length ? "" : t[0].ID;
					var r = this._messageListHandler.getLocalMessageList(o);
					return 0 === r.length ? "" : r[0].ID
				}
			}, {
				key: "_computeIndexEnd",
				value: function(e) {
					var t = e.messageList,
						n = void 0 === t ? [] : t,
						o = e.nextReqMessageID;
					return o ? n.findIndex((function(e) {
						return e.ID === o
					})) : n.length
				}
			}, {
				key: "_computeIndexStart",
				value: function(e) {
					var t = e.indexEnd,
						n = e.count;
					return t > n ? t - n : 0
				}
			}, {
				key: "_computeIsCompleted",
				value: function(e) {
					var t = e.conversationID;
					return !!(e.leftCount <= e.count && this._completedMap.has(t))
				}
			}, {
				key: "getHistoryMessages",
				value: function(e) {
					var t = e.conversationID,
						n = e.nextReqMessageID;
					if (t === Zn.CONV_SYSTEM) return q_();
					e.count ? e.count > 20 && (e.count = 20) : e.count = 15;
					var o = this._messageListHandler.getLocalOldestMessageByConversationID(t);
					o || ((o = {}).time = 0, o.sequence = 0, 0 === t.indexOf(Zn.CONV_C2C) ? (o
							.to = t.replace(Zn.CONV_C2C, ""), o.conversationType = Zn
							.CONV_C2C) : 0 === t.indexOf(Zn.CONV_GROUP) && (o.to = t
							.replace(Zn.CONV_GROUP, ""), o.conversationType = Zn.CONV_GROUP
							));
					var r = "",
						a = null;
					switch (o.conversationType) {
						case Zn.CONV_C2C:
							return r = t.replace(Zn.CONV_C2C, ""), (a = this.getModule(Fu)) ? a
								.getRoamingMessage({
									conversationID: e.conversationID,
									peerAccount: r,
									count: e.count,
									lastMessageTime: this._roamingMessageKeyMap.has(t) ? o
										.time : 0,
									messageKey: this._roamingMessageKeyMap.get(t)
								}) : x_({
									code: cd.CANNOT_FIND_MODULE,
									message: fp
								});
						case Zn.CONV_GROUP:
							return (a = this.getModule(qu)) ? a.getRoamingMessage({
								conversationID: e.conversationID,
								groupID: o.to,
								count: e.count,
								sequence: n && !1 === o.getOnlineOnlyFlag() ? o
									.sequence - 1 : o.sequence
							}) : x_({
								code: cd.CANNOT_FIND_MODULE,
								message: fp
							});
						default:
							return q_()
					}
				}
			}, {
				key: "patchConversationLastMessage",
				value: function(e) {
					var t = this.getLocalConversation(e);
					if (t) {
						var n = t.lastMessage,
							o = n.messageForShow,
							r = n.payload;
						if (Tc(o) || Tc(r)) {
							var a = this._messageListHandler.getLocalMessageList(e);
							if (0 === a.length) return;
							var s = a[a.length - 1];
							Gi.log("".concat(this._className,
								".patchConversationLastMessage conversationID:").concat(
								e, " payload:"), s.payload), t.updateLastMessage(s)
						}
					}
				}
			}, {
				key: "storeRoamingMessage",
				value: function() {
					var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
						n = arguments.length > 1 ? arguments[1] : void 0,
						o = n.startsWith(Zn.CONV_C2C) ? Zn.CONV_C2C : Zn.CONV_GROUP,
						r = null,
						a = [],
						s = 0,
						i = e.length,
						c = null,
						u = o === Zn.CONV_GROUP,
						l = this.getModule(Yu),
						d = function() {
							s = u ? e.length - 1 : 0, i = u ? 0 : e.length
						},
						p = function() {
							u ? --s : ++s
						},
						g = function() {
							return u ? s >= i : s < i
						};
					for (d(); g(); p())
						if (u && 1 === e[s].sequence && this.setCompleted(n), 1 !== e[s]
							.isPlaceMessage)
							if ((r = new A_(e[s])).to = e[s].to, r.isSystemMessage = !!e[s]
								.isSystemMessage, r.conversationType = o, 4 === e[s].event ?
								c = {
									type: Zn.MSG_GRP_TIP,
									content: t(t({}, e[s].elements), {}, {
										groupProfile: e[s].groupProfile
									})
								} : (e[s].elements = l.parseElements(e[s].elements, e[s].from),
									c = e[s].elements), u || r.setNickAndAvatar({
									nick: e[s].nick,
									avatar: e[s].avatar
								}), Tc(c)) {
								var h = new Lp(Qp);
								h.setMessage("from:".concat(r.from, " to:").concat(r.to,
										" sequence:").concat(r.sequence, " event:").concat(
										e[s].event)), h.setNetworkType(this.getNetworkType())
									.setLevel("warning").end()
							} else r.setElement(c), r.reInitialize(this.getMyUserID()), a.push(
								r);
					return this._messageListHandler.unshift(a), d = p = g = null, a
				}
			}, {
				key: "setMessageRead",
				value: function(e) {
					var t = e.conversationID,
						n = e.messageID,
						o = this.getLocalConversation(t);
					if (Gi.log("".concat(this._className, ".setMessageRead conversationID:")
							.concat(t, " unreadCount:").concat(o ? o.unreadCount : 0)), !o)
						return q_();
					if (o.type !== Zn.CONV_GROUP || Tc(o.groupAtInfoList) || this
						.deleteGroupAtTips(t), 0 === o.unreadCount) return q_();
					var r = this._messageListHandler.getLocalMessage(t, n),
						a = null;
					switch (o.type) {
						case Zn.CONV_C2C:
							return (a = this.getModule(Fu)) ? a.setMessageRead({
								conversationID: t,
								lastMessageTime: r ? r.time : o.lastMessage.lastTime
							}) : x_({
								code: cd.CANNOT_FIND_MODULE,
								message: fp
							});
						case Zn.CONV_GROUP:
							return (a = this._moduleManager.getModule(qu)) ? a.setMessageRead({
								conversationID: t,
								lastMessageSeq: r ? r.sequence : o.lastMessage
									.lastSequence
							}) : x_({
								code: cd.CANNOT_FIND_MODULE,
								message: fp
							});
						case Zn.CONV_SYSTEM:
							return o.unreadCount = 0, q_();
						default:
							return q_()
					}
				}
			}, {
				key: "updateIsReadAfterReadReport",
				value: function(e) {
					var t = e.conversationID,
						n = e.lastMessageSeq,
						o = e.lastMessageTime,
						r = this._messageListHandler.getLocalMessageList(t);
					if (0 !== r.length)
						for (var a, s = r.length - 1; s >= 0; s--)
							if (a = r[s], !(o && a.time > o || n && a.sequence > n)) {
								if ("in" === a.flow && a.isRead) break;
								a.setIsRead(!0)
							}
				}
			}, {
				key: "updateUnreadCount",
				value: function(e) {
					var t = this.getLocalConversation(e),
						n = this._messageListHandler.getLocalMessageList(e);
					if (t) {
						var o = t.unreadCount,
							r = n.filter((function(e) {
								return !e.isRead && !e.getOnlineOnlyFlag() && !e
									.isDeleted
							})).length;
						o !== r && (t.unreadCount = r, Gi.log("".concat(this._className,
								".updateUnreadCount from ").concat(o, " to ").concat(r,
								", conversationID:").concat(e)), this
							._emitConversationUpdate(!0, !1))
					}
				}
			}, {
				key: "updateIsRead",
				value: function(e) {
					var t = this.getLocalConversation(e),
						n = this.getLocalMessageList(e);
					if (t && 0 !== n.length && !pc(t.type)) {
						for (var o = [], r = 0, a = n.length; r < a; r++) "in" !== n[r].flow ?
							"out" !== n[r].flow || n[r].isRead || n[r].setIsRead(!0) : o.push(n[
								r]);
						var s = 0;
						if (t.type === Zn.CONV_C2C) {
							var i = o.slice(-t.unreadCount).filter((function(e) {
								return e.isRevoked
							})).length;
							s = o.length - t.unreadCount - i
						} else s = o.length - t.unreadCount;
						for (var c = 0; c < s && !o[c].isRead; c++) o[c].setIsRead(!0)
					}
				}
			}, {
				key: "deleteGroupAtTips",
				value: function(e) {
					var t = "".concat(this._className, ".deleteGroupAtTips");
					Gi.log("".concat(t));
					var n = this._conversationMap.get(e);
					if (!n) return Promise.resolve();
					var o = n.groupAtInfoList;
					if (0 === o.length) return Promise.resolve();
					var r = this.getMyUserID();
					return this.request({
						protocolName: El,
						requestData: {
							messageListToDelete: o.map((function(e) {
								return {
									from: e.from,
									to: r,
									messageSeq: e.__sequence,
									messageRandom: e.__random,
									groupID: e.groupID
								}
							}))
						}
					}).then((function() {
						return Gi.log("".concat(t, " ok. count:").concat(o.length)),
							n.clearGroupAtInfoList(), Promise.resolve()
					})).catch((function(e) {
						return Gi.error("".concat(t, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "appendToMessageList",
				value: function(e) {
					this._messageListHandler.pushIn(e)
				}
			}, {
				key: "setMessageRandom",
				value: function(e) {
					this.singlyLinkedList.set(e.random)
				}
			}, {
				key: "deleteMessageRandom",
				value: function(e) {
					this.singlyLinkedList.delete(e.random)
				}
			}, {
				key: "pushIntoMessageList",
				value: function(e, t, n) {
					return !(!this._messageListHandler.pushIn(t, n) || this
						._isMessageFromCurrentInstance(t) && !n) && (e.push(t), !0)
				}
			}, {
				key: "_isMessageFromCurrentInstance",
				value: function(e) {
					return this.singlyLinkedList.has(e.random)
				}
			}, {
				key: "revoke",
				value: function(e, t, n) {
					return this._messageListHandler.revoke(e, t, n)
				}
			}, {
				key: "getPeerReadTime",
				value: function(e) {
					return this._peerReadTimeMap.get(e)
				}
			}, {
				key: "recordPeerReadTime",
				value: function(e, t) {
					this._peerReadTimeMap.has(e) ? this._peerReadTimeMap.get(e) < t && this
						._peerReadTimeMap.set(e, t) : this._peerReadTimeMap.set(e, t)
				}
			}, {
				key: "updateMessageIsPeerReadProperty",
				value: function(e, t) {
					if (e.startsWith(Zn.CONV_C2C) && t > 0) {
						var n = this._messageListHandler.updateMessageIsPeerReadProperty(e, t);
						n.length > 0 && this.emitOuterEvent(Qn.MESSAGE_READ_BY_PEER, n)
					}
				}
			}, {
				key: "updateMessageIsReadProperty",
				value: function(e) {
					var t = this.getLocalConversation(e),
						n = this._messageListHandler.getLocalMessageList(e);
					if (t && 0 !== n.length && !pc(t.type)) {
						for (var o = [], r = 0; r < n.length; r++) "in" !== n[r].flow ?
							"out" !== n[r].flow || n[r].isRead || n[r].setIsRead(!0) : o.push(n[
								r]);
						var a = 0;
						if (t.type === Zn.CONV_C2C) {
							var s = o.slice(-t.unreadCount).filter((function(e) {
								return e.isRevoked
							})).length;
							a = o.length - t.unreadCount - s
						} else a = o.length - t.unreadCount;
						for (var i = 0; i < a && !o[i].isRead; i++) o[i].setIsRead(!0)
					}
				}
			}, {
				key: "updateMessageIsModifiedProperty",
				value: function(e) {
					this._messageListHandler.updateMessageIsModifiedProperty(e)
				}
			}, {
				key: "setCompleted",
				value: function(e) {
					Gi.log("".concat(this._className, ".setCompleted. conversationID:").concat(
						e)), this._completedMap.set(e, !0)
				}
			}, {
				key: "updateRoamingMessageKey",
				value: function(e, t) {
					this._roamingMessageKeyMap.set(e, t)
				}
			}, {
				key: "getConversationList",
				value: function() {
					var e = this,
						t = "".concat(this._className, ".getConversationList");
					Gi.log(t), this._pagingStatus === vu.REJECTED && (Gi.log("".concat(t,
							". continue to sync conversationList")), this
						._syncConversationList());
					var n = new Lp(rg);
					return this.request({
						protocolName: Sl,
						requestData: {
							fromAccount: this.getMyUserID()
						}
					}).then((function(o) {
						var r = o.data.conversations,
							a = void 0 === r ? [] : r,
							s = e._getConversationOptions(a);
						return e._updateLocalConversationList(s, !0), e
							._setStorageConversationList(), e
							._handleC2CPeerReadTime(), n.setMessage(
								"conversation count: ".concat(a.length))
							.setNetworkType(e.getNetworkType()).end(), Gi.log(""
								.concat(t, " ok")), q_({
								conversationList: e.getLocalConversationList()
							})
					})).catch((function(o) {
						return e.probeNetwork().then((function(e) {
							var t = m(e, 2),
								r = t[0],
								a = t[1];
							n.setError(o, r, a).end()
						})), Gi.error("".concat(t, " failed. error:"), o), x_(o)
					}))
				}
			}, {
				key: "_handleC2CPeerReadTime",
				value: function() {
					var e, t = E(this._conversationMap);
					try {
						for (t.s(); !(e = t.n()).done;) {
							var n = m(e.value, 2),
								o = n[0],
								r = n[1];
							r.type === Zn.CONV_C2C && (Gi.debug("".concat(this._className,
									"._handleC2CPeerReadTime conversationID:").concat(o,
									" peerReadTime:").concat(r.peerReadTime)), this
								.recordPeerReadTime(o, r.peerReadTime))
						}
					} catch (a) {
						t.e(a)
					} finally {
						t.f()
					}
				}
			}, {
				key: "getConversationProfile",
				value: function(e) {
					var t, n = this;
					if ((t = this._conversationMap.has(e) ? this._conversationMap.get(e) :
							new Sm({
								conversationID: e,
								type: e.slice(0, 3) === Zn.CONV_C2C ? Zn.CONV_C2C : Zn
									.CONV_GROUP
							}))._isInfoCompleted || t.type === Zn.CONV_SYSTEM) return q_({
						conversation: t
					});
					var o = new Lp(ag),
						r = "".concat(this._className, ".getConversationProfile");
					return Gi.log("".concat(r, ". conversationID:").concat(e, " remark:")
							.concat(t.remark, " lastMessage:"), t.lastMessage), this
						._updateUserOrGroupProfileCompletely(t).then((function(a) {
							o.setNetworkType(n.getNetworkType()).setMessage(
								"conversationID:".concat(e, " unreadCount:").concat(
									a.data.conversation.unreadCount)).end();
							var s = n.getModule(xu);
							if (s && t.type === Zn.CONV_C2C) {
								var i = e.replace(Zn.CONV_C2C, "");
								if (s.isMyFriend(i)) {
									var c = s.getFriendRemark(i);
									t.remark !== c && (t.remark = c, Gi.log("".concat(r,
										". conversationID:").concat(e,
										" patch remark:").concat(t.remark)))
								}
							}
							return Gi.log("".concat(r, " ok. conversationID:").concat(
								e)), a
						})).catch((function(t) {
							return n.probeNetwork().then((function(n) {
								var r = m(n, 2),
									a = r[0],
									s = r[1];
								o.setError(t, a, s).setMessage(
									"conversationID:".concat(e)).end()
							})), Gi.error("".concat(r, " failed. error:"), t), x_(t)
						}))
				}
			}, {
				key: "_updateUserOrGroupProfileCompletely",
				value: function(e) {
					var t = this;
					return e.type === Zn.CONV_C2C ? this.getModule(Uu).getUserProfile({
						userIDList: [e.toAccount]
					}).then((function(n) {
						var o = n.data;
						return 0 === o.length ? x_(new G_({
							code: cd.USER_OR_GROUP_NOT_FOUND,
							message: Kd
						})) : (e.userProfile = o[0], e._isInfoCompleted = !0, t
							._unshiftConversation(e), q_({
								conversation: e
							}))
					})) : this.getModule(qu).getGroupProfile({
						groupID: e.toAccount
					}).then((function(n) {
						return e.groupProfile = n.data.group, e._isInfoCompleted = !
							0, t._unshiftConversation(e), q_({
								conversation: e
							})
					}))
				}
			}, {
				key: "_unshiftConversation",
				value: function(e) {
					e instanceof Sm && !this._conversationMap.has(e.conversationID) && (this
						._conversationMap = new Map([
							[e.conversationID, e]
						].concat(v(this._conversationMap))), this
						._setStorageConversationList(), this._emitConversationUpdate(!0, !1)
						)
				}
			}, {
				key: "deleteConversation",
				value: function(e) {
					var t = this,
						n = {
							fromAccount: this.getMyUserID(),
							toAccount: void 0,
							type: void 0
						};
					if (!this._conversationMap.has(e)) {
						var o = new G_({
							code: cd.CONVERSATION_NOT_FOUND,
							message: Vd
						});
						return x_(o)
					}
					switch (this._conversationMap.get(e).type) {
						case Zn.CONV_C2C:
							n.type = 1, n.toAccount = e.replace(Zn.CONV_C2C, "");
							break;
						case Zn.CONV_GROUP:
							n.type = 2, n.toGroupID = e.replace(Zn.CONV_GROUP, "");
							break;
						case Zn.CONV_SYSTEM:
							return this.getModule(qu).deleteGroupSystemNotice({
								messageList: this._messageListHandler
									.getLocalMessageList(e)
							}), this.deleteLocalConversation(e), q_({
								conversationID: e
							});
						default:
							var r = new G_({
								code: cd.CONVERSATION_UN_RECORDED_TYPE,
								message: Bd
							});
							return x_(r)
					}
					var a = new Lp(sg);
					a.setMessage("conversationID:".concat(e));
					var s = "".concat(this._className, ".deleteConversation");
					return Gi.log("".concat(s, ". conversationID:").concat(e)), this
						.setMessageRead({
							conversationID: e
						}).then((function() {
							return t.request({
								protocolName: Tl,
								requestData: n
							})
						})).then((function() {
							return a.setNetworkType(t.getNetworkType()).end(), Gi.log(""
									.concat(s, " ok")), t.deleteLocalConversation(e),
								q_({
									conversationID: e
								})
						})).catch((function(e) {
							return t.probeNetwork().then((function(t) {
								var n = m(t, 2),
									o = n[0],
									r = n[1];
								a.setError(e, o, r).end()
							})), Gi.error("".concat(s, " failed. error:"), e), x_(e)
						}))
				}
			}, {
				key: "deleteLocalConversation",
				value: function(e) {
					this._conversationMap.delete(e), this._setStorageConversationList(), this
						._messageListHandler.removeByConversationID(e), this._completedMap
						.delete(e), this._emitConversationUpdate(!0, !1)
				}
			}, {
				key: "isMessageSentByCurrentInstance",
				value: function(e) {
					return !(!this._messageListHandler.hasLocalMessage(e.conversationID, e
						.ID) && !this.singlyLinkedList.has(e.random))
				}
			}, {
				key: "modifyMessageList",
				value: function(e) {
					if (e.startsWith(Zn.CONV_C2C)) {
						var t = Date.now();
						this._messageListHandler.modifyMessageSentByPeer(e);
						var n = this.getModule(Uu).getNickAndAvatarByUserID(this.getMyUserID());
						this._messageListHandler.modifyMessageSentByMe({
							conversationID: e,
							latestNick: n.nick,
							latestAvatar: n.avatar
						}), Gi.log("".concat(this._className,
								".modifyMessageList conversationID:").concat(e, " cost ")
							.concat(Date.now() - t, " ms"))
					}
				}
			}, {
				key: "updateUserProfileSpecifiedKey",
				value: function(e) {
					Gi.log("".concat(this._className,
						".updateUserProfileSpecifiedKey options:"), e);
					var t = e.conversationID,
						n = e.nick,
						o = e.avatar;
					if (this._conversationMap.has(t)) {
						var r = this._conversationMap.get(t).userProfile;
						xi(n) && r.nick !== n && (r.nick = n), xi(o) && r.avatar !== o && (r
							.avatar = o), this._emitConversationUpdate(!0, !1)
					}
				}
			}, {
				key: "onMyProfileModified",
				value: function(e) {
					var n = this,
						o = this.getLocalConversationList(),
						r = Date.now();
					o.forEach((function(o) {
						n.modifyMessageSentByMe(t({
							conversationID: o.conversationID
						}, e))
					})), Gi.log("".concat(this._className,
							".onMyProfileModified. modify all messages sent by me, cost ")
						.concat(Date.now() - r, " ms"))
				}
			}, {
				key: "modifyMessageSentByMe",
				value: function(e) {
					this._messageListHandler.modifyMessageSentByMe(e)
				}
			}, {
				key: "getLatestMessageSentByMe",
				value: function(e) {
					return this._messageListHandler.getLatestMessageSentByMe(e)
				}
			}, {
				key: "modifyMessageSentByPeer",
				value: function(e, t) {
					this._messageListHandler.modifyMessageSentByPeer(e, t)
				}
			}, {
				key: "getLatestMessageSentByPeer",
				value: function(e) {
					return this._messageListHandler.getLatestMessageSentByPeer(e)
				}
			}, {
				key: "pushIntoNoticeResult",
				value: function(e, t) {
					return !(!this._messageListHandler.pushIn(t) || this.singlyLinkedList.has(t
						.random)) && (e.push(t), !0)
				}
			}, {
				key: "getGroupLocalLastMessageSequence",
				value: function(e) {
					return this._messageListHandler.getGroupLocalLastMessageSequence(e)
				}
			}, {
				key: "checkAndPatchRemark",
				value: function() {
					if (0 !== this._conversationMap.size) {
						var e = this.getModule(xu);
						if (e) {
							var t = v(this._conversationMap.values()).filter((function(e) {
								return e.type === Zn.CONV_C2C
							}));
							if (0 !== t.length) {
								var n = !1,
									o = 0;
								t.forEach((function(t) {
										var r = t.conversationID.replace(Zn.CONV_C2C,
											"");
										if (e.isMyFriend(r)) {
											var a = e.getFriendRemark(r);
											t.remark !== a && (t.remark = a, o += 1,
												n = !0)
										}
									})), Gi.log("".concat(this._className,
											".checkAndPatchRemark. c2c conversation count:")
										.concat(t.length, ", patched count:").concat(o)), n &&
									this._emitConversationUpdate(!0, !1)
							}
						}
					}
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._pagingStatus = vu
						.NOT_START, this._messageListHandler.reset(), this._roamingMessageKeyMap
						.clear(), this.singlyLinkedList.reset(), this._peerReadTimeMap.clear(),
						this._completedMap.clear(), this._conversationMap.clear(), this
						._pagingTimeStamp = 0, this.resetReady()
				}
			}]), r
		}(ol),
		Em = function() {
			function e(t) {
				o(this, e), this._groupModule = t, this._className = "GroupTipsHandler", this
					._cachedGroupTipsMap = new Map, this._checkCountMap = new Map, this.MAX_CHECK_COUNT = 4
			}
			return a(e, [{
				key: "onCheckTimer",
				value: function(e) {
					e % 1 == 0 && this._cachedGroupTipsMap.size > 0 && this
						._checkCachedGroupTips()
				}
			}, {
				key: "_checkCachedGroupTips",
				value: function() {
					var e = this;
					this._cachedGroupTipsMap.forEach((function(t, n) {
						var o = e._checkCountMap.get(n),
							r = e._groupModule.hasLocalGroup(n);
						Gi.log("".concat(e._className,
									"._checkCachedGroupTips groupID:").concat(n,
									" hasLocalGroup:").concat(r, " checkCount:")
								.concat(o)), r ? (e._notifyCachedGroupTips(n), e
								._checkCountMap.delete(n), e._groupModule
								.deleteUnjoinedAVChatRoom(n)) : o >= e
							.MAX_CHECK_COUNT ? (e._deleteCachedGroupTips(n), e
								._checkCountMap.delete(n)) : (o++, e._checkCountMap
								.set(n, o))
					}))
				}
			}, {
				key: "onNewGroupTips",
				value: function(e) {
					Gi.debug("".concat(this._className, ".onReceiveGroupTips count:").concat(e
						.dataList.length));
					var t = this.newGroupTipsStoredAndSummary(e),
						n = t.eventDataList,
						o = t.result,
						r = t.AVChatRoomMessageList;
					(r.length > 0 && this._groupModule.onAVChatRoomMessage(r), n.length > 0) &&
					(this._groupModule.getModule(Ku).onNewMessage({
						conversationOptionsList: n,
						isInstantMessage: !0
					}), this._groupModule.updateNextMessageSeq(n));
					o.length > 0 && (this._groupModule.emitOuterEvent(Qn.MESSAGE_RECEIVED, o),
						this.handleMessageList(o))
				}
			}, {
				key: "newGroupTipsStoredAndSummary",
				value: function(e) {
					for (var n = e.event, o = e.dataList, r = null, a = [], s = [], i = {},
							c = [], u = 0, l = o.length; u < l; u++) {
						var d = o[u],
							p = d.groupProfile.groupID,
							g = this._groupModule.hasLocalGroup(p);
						if (g || !this._groupModule.isUnjoinedAVChatRoom(p))
							if (g)
								if (this._groupModule.isMessageFromAVChatroom(p)) {
									var h = cc(d);
									h.event = n, c.push(h)
								} else {
									d.currentUser = this._groupModule.getMyUserID(), d
										.conversationType = Zn.CONV_GROUP, (r = new A_(d))
										.setElement({
											type: Zn.MSG_GRP_TIP,
											content: t(t({}, d.elements), {}, {
												groupProfile: d.groupProfile
											})
										}), r.isSystemMessage = !1;
									var f = this._groupModule.getModule(Ku),
										_ = r.conversationID;
									if (6 === n) r.setOnlineOnlyFlag(!0), s.push(r);
									else if (!f.pushIntoNoticeResult(s, r)) continue;
									if (6 !== n || !f.getLocalConversation(_)) {
										if (6 !== n) this._groupModule.getModule(nl)
											.addMessageSequence({
												key: Dp,
												message: r
											});
										if (ji(i[_])) i[_] = a.push({
											conversationID: _,
											unreadCount: "in" === r.flow && r
												.getOnlineOnlyFlag() ? 0 : 1,
											type: r.conversationType,
											subType: r.conversationSubType,
											lastMessage: r
										}) - 1;
										else {
											var m = i[_];
											a[m].type = r.conversationType, a[m].subType = r
												.conversationSubType, a[m].lastMessage = r,
												"in" !== r.flow || r.getOnlineOnlyFlag() || a[m]
												.unreadCount++
										}
									}
								}
						else this._cacheGroupTipsAndProbe({
							groupID: p,
							event: n,
							item: d
						})
					}
					return {
						eventDataList: a,
						result: s,
						AVChatRoomMessageList: c
					}
				}
			}, {
				key: "handleMessageList",
				value: function(e) {
					var t = this;
					e.forEach((function(e) {
						switch (e.payload.operationType) {
							case 1:
								t._onNewMemberComeIn(e);
								break;
							case 2:
								t._onMemberQuit(e);
								break;
							case 3:
								t._onMemberKickedOut(e);
								break;
							case 4:
								t._onMemberSetAdmin(e);
								break;
							case 5:
								t._onMemberCancelledAdmin(e);
								break;
							case 6:
								t._onGroupProfileModified(e);
								break;
							case 7:
								t._onMemberInfoModified(e);
								break;
							default:
								Gi.warn("".concat(t._className,
									".handleMessageList unknown operationType:"
									).concat(e.payload.operationType))
						}
					}))
				}
			}, {
				key: "_onNewMemberComeIn",
				value: function(e) {
					var t = e.payload,
						n = t.memberNum,
						o = t.groupProfile.groupID,
						r = this._groupModule.getLocalGroupProfile(o);
					r && qi(n) && (r.memberNum = n)
				}
			}, {
				key: "_onMemberQuit",
				value: function(e) {
					var t = e.payload,
						n = t.memberNum,
						o = t.groupProfile.groupID,
						r = this._groupModule.getLocalGroupProfile(o);
					r && qi(n) && (r.memberNum = n), this._groupModule.deleteLocalGroupMembers(
						o, e.payload.userIDList)
				}
			}, {
				key: "_onMemberKickedOut",
				value: function(e) {
					var t = e.payload,
						n = t.memberNum,
						o = t.groupProfile.groupID,
						r = this._groupModule.getLocalGroupProfile(o);
					r && qi(n) && (r.memberNum = n), this._groupModule.deleteLocalGroupMembers(
						o, e.payload.userIDList)
				}
			}, {
				key: "_onMemberSetAdmin",
				value: function(e) {
					var t = e.payload.groupProfile.groupID,
						n = e.payload.userIDList,
						o = this._groupModule.getModule(Vu);
					n.forEach((function(e) {
						var n = o.getLocalGroupMemberInfo(t, e);
						n && n.updateRole(Zn.GRP_MBR_ROLE_ADMIN)
					}))
				}
			}, {
				key: "_onMemberCancelledAdmin",
				value: function(e) {
					var t = e.payload.groupProfile.groupID,
						n = e.payload.userIDList,
						o = this._groupModule.getModule(Vu);
					n.forEach((function(e) {
						var n = o.getLocalGroupMemberInfo(t, e);
						n && n.updateRole(Zn.GRP_MBR_ROLE_MEMBER)
					}))
				}
			}, {
				key: "_onGroupProfileModified",
				value: function(e) {
					var t = this,
						n = e.payload.newGroupProfile,
						o = e.payload.groupProfile.groupID,
						r = this._groupModule.getLocalGroupProfile(o);
					Object.keys(n).forEach((function(e) {
						switch (e) {
							case "ownerID":
								t._ownerChanged(r, n);
								break;
							default:
								r[e] = n[e]
						}
					})), this._groupModule.emitGroupListUpdate(!0, !0)
				}
			}, {
				key: "_ownerChanged",
				value: function(e, t) {
					var n = e.groupID,
						o = this._groupModule.getLocalGroupProfile(n),
						r = this.tim.context.identifier;
					if (r === t.ownerID) {
						o.updateGroup({
							selfInfo: {
								role: Zn.GRP_MBR_ROLE_OWNER
							}
						});
						var a = this._groupModule.getModule(Vu),
							s = a.getLocalGroupMemberInfo(n, r),
							i = this._groupModule.getLocalGroupProfile(n).ownerID,
							c = a.getLocalGroupMemberInfo(n, i);
						s && s.updateRole(Zn.GRP_MBR_ROLE_OWNER), c && c.updateRole(Zn
							.GRP_MBR_ROLE_MEMBER)
					}
				}
			}, {
				key: "_onMemberInfoModified",
				value: function(e) {
					var t = e.payload.groupProfile.groupID,
						n = this._groupModule.getModule(Vu);
					e.payload.memberList.forEach((function(e) {
						var o = n.getLocalGroupMemberInfo(t, e.userID);
						o && e.muteTime && o.updateMuteUntil(e.muteTime)
					}))
				}
			}, {
				key: "_cacheGroupTips",
				value: function(e, t) {
					this._cachedGroupTipsMap.has(e) || this._cachedGroupTipsMap.set(e, []), this
						._cachedGroupTipsMap.get(e).push(t)
				}
			}, {
				key: "_deleteCachedGroupTips",
				value: function(e) {
					this._cachedGroupTipsMap.has(e) && this._cachedGroupTipsMap.delete(e)
				}
			}, {
				key: "_notifyCachedGroupTips",
				value: function(e) {
					var t = this,
						n = this._cachedGroupTipsMap.get(e) || [];
					n.forEach((function(e) {
						t.onNewGroupTips(e)
					})), this._deleteCachedGroupTips(e), Gi.log("".concat(this._className,
						"._notifyCachedGroupTips groupID:").concat(e, " count:").concat(
						n.length))
				}
			}, {
				key: "_cacheGroupTipsAndProbe",
				value: function(e) {
					var t = this,
						n = e.groupID,
						o = e.event,
						r = e.item;
					this._cacheGroupTips(n, {
							event: o,
							dataList: [r]
						}), this._groupModule.getGroupSimplifiedInfo(n).then((function(e) {
							e.type === Zn.GRP_AVCHATROOM ? t._groupModule.hasLocalGroup(
									n) ? t._notifyCachedGroupTips(n) : t._groupModule
								.setUnjoinedAVChatRoom(n) : (t._groupModule
									.updateGroupMap([e]), t._notifyCachedGroupTips(n))
						})), this._checkCountMap.has(n) || this._checkCountMap.set(n, 0), Gi
						.log("".concat(this._className, "._cacheGroupTipsAndProbe groupID:")
							.concat(n))
				}
			}, {
				key: "reset",
				value: function() {
					this._cachedGroupTipsMap.clear(), this._checkCountMap.clear()
				}
			}]), e
		}(),
		Dm = qo.UNSUPPORTED_Y,
		km = [].push,
		Cm = Math.min;
	Qo("split", (function(e, t, n) {
		var o;
		return o = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 !=
			"ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/)
			.length > 1 || "".split(/.?/).length ? function(e, n) {
				var o = String(q(this)),
					r = void 0 === n ? 4294967295 : n >>> 0;
				if (0 === r) return [];
				if (void 0 === e) return [o];
				if (!ir(e)) return t.call(o, e, r);
				for (var a, s, i, c = [], u = (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") +
						(e.unicode ? "u" : "") + (e.sticky ? "y" : ""), l = 0, d = new RegExp(e
							.source, u + "g");
					(a = Wo.call(d, o)) && !((s = d.lastIndex) > l && (c.push(o.slice(l, a.index)),
						a.length > 1 && a.index < o.length && km.apply(c, a.slice(1)), i = a[0]
						.length, l = s, c.length >= r));) d.lastIndex === a.index && d.lastIndex++;
				return l === o.length ? !i && d.test("") || c.push("") : c.push(o.slice(l)), c
					.length > r ? c.slice(0, r) : c
			} : "0".split(void 0, 0).length ? function(e, n) {
				return void 0 === e && 0 === n ? [] : t.call(this, e, n)
			} : t, [function(t, n) {
				var r = q(this),
					a = null == t ? void 0 : t[e];
				return void 0 !== a ? a.call(t, r, n) : o.call(String(r), t, n)
			}, function(e, r) {
				var a = n(o, this, e, r, o !== t);
				if (a.done) return a.value;
				var s = Q(this),
					i = String(e),
					c = _a(s, RegExp),
					u = s.unicode,
					l = (s.ignoreCase ? "i" : "") + (s.multiline ? "m" : "") + (s.unicode ?
						"u" : "") + (Dm ? "g" : "y"),
					d = new c(Dm ? "^(?:" + s.source + ")" : s, l),
					p = void 0 === r ? 4294967295 : r >>> 0;
				if (0 === p) return [];
				if (0 === i.length) return null === tr(d, i) ? [i] : [];
				for (var g = 0, h = 0, f = []; h < i.length;) {
					d.lastIndex = Dm ? 0 : h;
					var _, m = tr(d, Dm ? i.slice(h) : i);
					if (null === m || (_ = Cm(we(d.lastIndex + (Dm ? h : 0)), i.length)) === g)
						h = er(i, h, u);
					else {
						if (f.push(i.slice(g, h)), f.length === p) return f;
						for (var v = 1; v <= m.length - 1; v++)
							if (f.push(m[v]), f.length === p) return f;
						h = g = _
					}
				}
				return f.push(i.slice(g)), f
			}]
	}), !!A((function() {
		var e = /(?:)/,
			t = e.exec;
		e.exec = function() {
			return t.apply(this, arguments)
		};
		var n = "ab".split(e);
		return 2 !== n.length || "a" !== n[0] || "b" !== n[1]
	})), Dm);
	var Nm = function() {
			function e(t) {
				o(this, e), this._groupModule = t, this._className = "CommonGroupHandler", this
					.tempConversationList = null, this._cachedGroupMessageMap = new Map, this._checkCountMap =
					new Map, this.MAX_CHECK_COUNT = 4, t.getInnerEmitterInstance().once(im
						.CONTEXT_A2KEY_AND_TINYID_UPDATED, this._initGroupList, this)
			}
			return a(e, [{
				key: "onCheckTimer",
				value: function(e) {
					e % 1 == 0 && this._cachedGroupMessageMap.size > 0 && this
						._checkCachedGroupMessage()
				}
			}, {
				key: "_checkCachedGroupMessage",
				value: function() {
					var e = this;
					this._cachedGroupMessageMap.forEach((function(t, n) {
						var o = e._checkCountMap.get(n),
							r = e._groupModule.hasLocalGroup(n);
						Gi.log("".concat(e._className,
									"._checkCachedGroupMessage groupID:").concat(n,
									" hasLocalGroup:").concat(r, " checkCount:")
								.concat(o)), r ? (e._notifyCachedGroupMessage(n), e
								._checkCountMap.delete(n), e._groupModule
								.deleteUnjoinedAVChatRoom(n)) : o >= e
							.MAX_CHECK_COUNT ? (e._deleteCachedGroupMessage(n), e
								._checkCountMap.delete(n)) : (o++, e._checkCountMap
								.set(n, o))
					}))
				}
			}, {
				key: "_initGroupList",
				value: function() {
					var e = this;
					Gi.log("".concat(this._className, "._initGroupList"));
					var t = new Lp(Ig),
						n = this._groupModule.getStorageGroupList();
					if (Bi(n) && n.length > 0) {
						n.forEach((function(t) {
							e._groupModule.initGroupMap(t)
						})), this._groupModule.emitGroupListUpdate(!0, !1);
						var o = this._groupModule.getLocalGroupList().length;
						t.setNetworkType(this._groupModule.getNetworkType()).setMessage(
							"group count:".concat(o)).end()
					} else t.setNetworkType(this._groupModule.getNetworkType()).setMessage(
						"group count:0").end();
					Gi.log("".concat(this._className, "._initGroupList ok")), this
					.getGroupList()
				}
			}, {
				key: "handleUpdateGroupLastMessage",
				value: function(e) {
					var t = "".concat(this._className, ".handleUpdateGroupLastMessage");
					if (Gi.debug("".concat(t, " conversation count:").concat(e.length,
							", local group count:").concat(this._groupModule
							.getLocalGroupList().length)), 0 !== this._groupModule.getGroupMap()
						.size) {
						for (var n, o, r, a = !1, s = 0, i = e.length; s < i; s++)(n = e[s])
							.type === Zn.CONV_GROUP && (o = n.conversationID.split(/^GROUP/)[1],
								(r = this._groupModule.getLocalGroupProfile(o)) && (r
									.lastMessage = n.lastMessage, a = !0));
						a && (this._groupModule.sortLocalGroupList(), this._groupModule
							.emitGroupListUpdate(!0, !1))
					} else this.tempConversationList = e
				}
			}, {
				key: "onNewGroupMessage",
				value: function(e) {
					Gi.debug("".concat(this._className, ".onNewGroupMessage count:").concat(e
						.dataList.length));
					var t = this._newGroupMessageStoredAndSummary(e),
						n = t.conversationOptionsList,
						o = t.messageList,
						r = t.AVChatRoomMessageList;
					(r.length > 0 && this._groupModule.onAVChatRoomMessage(r), this._groupModule
						.filterModifiedMessage(o), n.length > 0) && (this._groupModule
						.getModule(Ku).onNewMessage({
							conversationOptionsList: n,
							isInstantMessage: !0
						}), this._groupModule.updateNextMessageSeq(n));
					var a = this._groupModule.filterUnmodifiedMessage(o);
					a.length > 0 && this._groupModule.emitOuterEvent(Qn.MESSAGE_RECEIVED, a), o
						.length = 0
				}
			}, {
				key: "_newGroupMessageStoredAndSummary",
				value: function(e) {
					var t = e.dataList,
						n = e.event,
						o = e.isInstantMessage,
						r = null,
						a = [],
						s = [],
						i = [],
						c = {},
						u = Zn.CONV_GROUP,
						l = this._groupModule.getModule(Yu),
						d = t.length;
					d > 1 && t.sort((function(e, t) {
						return e.sequence - t.sequence
					}));
					for (var p = 0; p < d; p++) {
						var g = t[p],
							h = g.groupProfile.groupID,
							f = this._groupModule.hasLocalGroup(h);
						if (f || !this._groupModule.isUnjoinedAVChatRoom(h))
							if (f)
								if (this._groupModule.isMessageFromAVChatroom(h)) {
									var _ = cc(g);
									_.event = n, i.push(_)
								} else {
									g.currentUser = this._groupModule.getMyUserID(), g
										.conversationType = u, g.isSystemMessage = !!g
										.isSystemMessage, r = new A_(g), g.elements = l
										.parseElements(g.elements, g.from), r.setElement(g
											.elements);
									var m = 1 === t[p].isModified,
										v = this._groupModule.getModule(Ku);
									v.isMessageSentByCurrentInstance(r) ? r.isModified = m :
										m = !1;
									var M = this._groupModule.getModule(nl);
									if (o && M.addMessageDelay({
											currentTime: Date.now(),
											time: r.time
										}), 1 === g.onlineOnlyFlag) r.setOnlineOnlyFlag(!0), s
										.push(r);
									else {
										if (!v.pushIntoMessageList(s, r, m)) continue;
										M.addMessageSequence({
											key: Dp,
											message: r
										});
										var y = r.conversationID;
										if (ji(c[y])) c[y] = a.push({
											conversationID: y,
											unreadCount: "out" === r.flow ? 0 : 1,
											type: r.conversationType,
											subType: r.conversationSubType,
											lastMessage: r
										}) - 1;
										else {
											var I = c[y];
											a[I].type = r.conversationType, a[I].subType = r
												.conversationSubType, a[I].lastMessage = r,
												"in" === r.flow && a[I].unreadCount++
										}
									}
								}
						else this._cacheGroupMessageAndProbe({
							groupID: h,
							event: n,
							item: g
						})
					}
					return {
						conversationOptionsList: a,
						messageList: s,
						AVChatRoomMessageList: i
					}
				}
			}, {
				key: "onGroupMessageRevoked",
				value: function(e) {
					Gi.debug("".concat(this._className, ".onGroupMessageRevoked nums:").concat(e
						.dataList.length));
					var t = this._groupModule.getModule(Ku),
						n = [],
						o = null;
					e.dataList.forEach((function(e) {
						var r = e.elements.revokedInfos;
						ji(r) || r.forEach((function(e) {
							(o = t.revoke("GROUP".concat(e.groupID), e
								.sequence, e.random)) && n.push(o)
						}))
					})), 0 !== n.length && (t.onMessageRevoked(n), this._groupModule
						.emitOuterEvent(Qn.MESSAGE_REVOKED, n))
				}
			}, {
				key: "_groupListTreeShaking",
				value: function(e) {
					for (var t = new Map(v(this._groupModule.getGroupMap())), n = 0, o = e
							.length; n < o; n++) t.delete(e[n].groupID);
					this._groupModule.hasJoinedAVChatRoom() && this._groupModule
						.getJoinedAVChatRoom().forEach((function(e) {
							t.delete(e)
						}));
					for (var r = v(t.keys()), a = 0, s = r.length; a < s; a++) this._groupModule
						.deleteGroup(r[a])
				}
			}, {
				key: "getGroupList",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".getGroupList"),
						o = new Lp(Mg);
					Gi.log("".concat(n));
					var r = {
							introduction: "Introduction",
							notification: "Notification",
							createTime: "CreateTime",
							ownerID: "Owner_Account",
							lastInfoTime: "LastInfoTime",
							memberNum: "MemberNum",
							maxMemberNum: "MaxMemberNum",
							joinOption: "ApplyJoinOption",
							muteAllMembers: "ShutUpAllMember"
						},
						a = ["Type", "Name", "FaceUrl", "NextMsgSeq", "LastMsgTime"],
						s = [];
					return e && e.groupProfileFilter && e.groupProfileFilter.forEach((function(
						e) {
						r[e] && a.push(r[e])
					})), this._pagingGetGroupList({
						limit: 50,
						offset: 0,
						groupBaseInfoFilter: a,
						groupList: s
					}).then((function() {
						Gi.log("".concat(n, " ok. count:").concat(s.length)), t
							._groupListTreeShaking(s), t._groupModule
							.updateGroupMap(s);
						var e = t._groupModule.getLocalGroupList().length;
						return o.setNetworkType(t._groupModule.getNetworkType())
							.setMessage("remote count:".concat(s.length,
								", after tree shaking, local count:").concat(e))
							.end(), t.tempConversationList && (Gi.log("".concat(n,
									" update last message with tempConversationList, count:"
									).concat(t.tempConversationList.length)), t
								.handleUpdateGroupLastMessage({
									data: t.tempConversationList
								}), t.tempConversationList = null), t._groupModule
							.emitGroupListUpdate(), O_({
								groupList: t._groupModule.getLocalGroupList()
							})
					})).catch((function(e) {
						return t._groupModule.probeNetwork().then((function(t) {
							var n = m(t, 2),
								r = n[0],
								a = n[1];
							o.setError(e, r, a).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "_pagingGetGroupList",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, "._pagingGetGroupList"),
						o = e.limit,
						r = e.offset,
						a = e.groupBaseInfoFilter,
						s = e.groupList,
						i = new Lp(Eg);
					return this._groupModule.request({
						protocolName: Dl,
						requestData: {
							memberAccount: this._groupModule.getMyUserID(),
							limit: o,
							offset: r,
							responseFilter: {
								groupBaseInfoFilter: a,
								selfInfoFilter: ["Role", "JoinTime", "MsgFlag"]
							}
						}
					}).then((function(e) {
						var c = e.data,
							u = c.groups,
							l = c.totalCount;
						s.push.apply(s, v(u));
						var d = r + o,
							p = !(l > d);
						return i.setNetworkType(t._groupModule.getNetworkType())
							.setMessage("offset:".concat(r, " totalCount:").concat(
									l, " isCompleted:").concat(p, " currentCount:")
								.concat(s.length)).end(), p ? (Gi.log("".concat(n,
								" ok. totalCount:").concat(l)), O_({
								groupList: s
							})) : (r = d, t._pagingGetGroupList({
								limit: o,
								offset: r,
								groupBaseInfoFilter: a,
								groupList: s
							}))
					})).catch((function(e) {
						return t._groupModule.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							i.setError(e, o, r).end()
						})), x_(e)
					}))
				}
			}, {
				key: "_cacheGroupMessage",
				value: function(e, t) {
					this._cachedGroupMessageMap.has(e) || this._cachedGroupMessageMap.set(e,
					[]), this._cachedGroupMessageMap.get(e).push(t)
				}
			}, {
				key: "_deleteCachedGroupMessage",
				value: function(e) {
					this._cachedGroupMessageMap.has(e) && this._cachedGroupMessageMap.delete(e)
				}
			}, {
				key: "_notifyCachedGroupMessage",
				value: function(e) {
					var t = this,
						n = this._cachedGroupMessageMap.get(e) || [];
					n.forEach((function(e) {
						t.onNewGroupMessage(e)
					})), this._deleteCachedGroupMessage(e), Gi.log("".concat(this
						._className, "._notifyCachedGroupMessage groupID:").concat(e,
						" count:").concat(n.length))
				}
			}, {
				key: "_cacheGroupMessageAndProbe",
				value: function(e) {
					var t = this,
						n = e.groupID,
						o = e.event,
						r = e.item;
					this._cacheGroupMessage(n, {
							event: o,
							dataList: [r]
						}), this._groupModule.getGroupSimplifiedInfo(n).then((function(e) {
							e.type === Zn.GRP_AVCHATROOM ? t._groupModule.hasLocalGroup(
									n) ? t._notifyCachedGroupMessage(n) : t._groupModule
								.setUnjoinedAVChatRoom(n) : (t._groupModule
									.updateGroupMap([e]), t._notifyCachedGroupMessage(n)
									)
						})), this._checkCountMap.has(n) || this._checkCountMap.set(n, 0), Gi
						.log("".concat(this._className, "._cacheGroupMessageAndProbe groupID:")
							.concat(n))
				}
			}, {
				key: "reset",
				value: function() {
					this._cachedGroupMessageMap.clear(), this._checkCountMap.clear(), this
						._groupModule.getInnerEmitterInstance().once(im
							.CONTEXT_A2KEY_AND_TINYID_UPDATED, this._initGroupList, this)
				}
			}]), e
		}(),
		Am = function() {
			function e(t) {
				o(this, e);
				var n = t.groupModule,
					r = t.groupID,
					a = t.onInit,
					s = t.onSuccess,
					i = t.onFail;
				this._groupModule = n, this._className = "Polling", this._onInit = a, this._onSuccess = s, this
					._onFail = i, this._groupID = r, this._timeoutID = -1, this._isRunning = !1, this
					._pollingInterval = 0, this.MAX_POLLING_INTERVAL = 2e3
			}
			return a(e, [{
				key: "start",
				value: function() {
					Gi.log("".concat(this._className, ".start")), this._isRunning = !0, this
						._request()
				}
			}, {
				key: "isRunning",
				value: function() {
					return this._isRunning
				}
			}, {
				key: "_request",
				value: function() {
					var e = this,
						t = this._onInit(this._groupID),
						n = Kl;
					this._groupModule.isLoggedIn() || (n = Bl), this._groupModule.request({
						protocolName: n,
						requestData: t
					}).then((function(t) {
						e._onSuccess(e._groupID, t), e.isRunning() && (clearTimeout(
							e._timeoutID), e._timeoutID = setTimeout(e
							._request.bind(e), 0))
					})).catch((function(t) {
						e._onFail(e._groupID, t), e.isRunning() && (clearTimeout(e
							._timeoutID), e._timeoutID = setTimeout(e
							._request.bind(e), e.MAX_POLLING_INTERVAL))
					}))
				}
			}, {
				key: "stop",
				value: function() {
					Gi.log("".concat(this._className, ".stop")), this._timeoutID > 0 && (
						clearTimeout(this._timeoutID), this._timeoutID = -1, this
						._pollingInterval = 0), this._isRunning = !1
				}
			}]), e
		}(),
		Om = {
			3: !0,
			4: !0,
			5: !0,
			6: !0
		},
		Lm = function() {
			function e(t) {
				o(this, e), this._groupModule = t, this._className = "AVChatRoomHandler", this._joinedGroupMap =
					new Map, this._pollingRequestInfoMap = new Map, this._pollingInstanceMap = new Map, this
					.sequencesLinkedList = new mm(100), this.messageIDLinkedList = new mm(100), this
					.receivedMessageCount = 0, this._reportMessageStackedCount = 0, this._onlineMemberCountMap =
					new Map, this.DEFAULT_EXPIRE_TIME = 60
			}
			return a(e, [{
				key: "hasJoinedAVChatRoom",
				value: function() {
					return this._joinedGroupMap.size > 0
				}
			}, {
				key: "checkJoinedAVChatRoomByID",
				value: function(e) {
					return this._joinedGroupMap.has(e)
				}
			}, {
				key: "getJoinedAVChatRoom",
				value: function() {
					return this._joinedGroupMap.size > 0 ? v(this._joinedGroupMap.keys()) : null
				}
			}, {
				key: "_updateRequestData",
				value: function(e) {
					return t({}, this._pollingRequestInfoMap.get(e))
				}
			}, {
				key: "_handleSuccess",
				value: function(e, t) {
					var n = t.data,
						o = n.key,
						r = n.nextSeq,
						a = n.rspMsgList;
					if (0 !== n.errorCode) {
						var s = this._pollingRequestInfoMap.get(e),
							i = new Lp(Gg),
							c = s ? "".concat(s.key, "-").concat(s.startSeq) :
							"requestInfo is undefined";
						i.setMessage("".concat(e, "-").concat(c, "-").concat(t.errorInfo))
							.setCode(t.errorCode).setNetworkType(this._groupModule
								.getNetworkType()).end(!0)
					} else {
						if (!this.checkJoinedAVChatRoomByID(e)) return;
						xi(o) && qi(r) && this._pollingRequestInfoMap.set(e, {
							key: o,
							startSeq: r
						}), Bi(a) && a.length > 0 && (a.forEach((function(e) {
							e.to = e.groupID
						})), this.onMessage(a))
					}
				}
			}, {
				key: "_handleFailure",
				value: function(e, t) {}
			}, {
				key: "onMessage",
				value: function(e) {
					if (Bi(e) && 0 !== e.length) {
						var t = null,
							n = [],
							o = this._getModule(Ku),
							r = e.length;
						r > 1 && e.sort((function(e, t) {
							return e.sequence - t.sequence
						}));
						for (var a = this._getModule(Bu), s = 0; s < r; s++)
							if (Om[e[s].event]) {
								this.receivedMessageCount += 1, t = this.packMessage(e[s], e[s]
									.event);
								var i = 1 === e[s].isModified;
								if ((a.isUnlimitedAVChatRoom() || !this.sequencesLinkedList.has(
										t.sequence)) && !this.messageIDLinkedList.has(t.ID)) {
									var c = t.conversationID;
									if (this.receivedMessageCount % 40 == 0 && this._getModule(
											Zu).detectMessageLoss(c, this.sequencesLinkedList
											.data()), null !== this.sequencesLinkedList
									.tail()) {
										var u = this.sequencesLinkedList.tail().value,
											l = t.sequence - u;
										l > 1 && l <= 20 ? this._getModule(Zu)
											.onMessageMaybeLost(c, u + 1, l - 1) : l < -1 &&
											l >= -20 && this._getModule(Zu).onMessageMaybeLost(
												c, t.sequence + 1, Math.abs(l) - 1)
									}
									this.sequencesLinkedList.set(t.sequence), this
										.messageIDLinkedList.set(t.ID);
									var d = !1;
									if (this._isMessageSentByCurrentInstance(t) ? i && (d = !0,
											t.isModified = i, o.updateMessageIsModifiedProperty(
												t)) : d = !0, d) {
										if (t.conversationType, Zn.CONV_SYSTEM, t
											.conversationType !== Zn.CONV_SYSTEM) {
											var p = this._getModule(nl),
												g = t.conversationID.replace(Zn.CONV_GROUP, "");
											this._pollingInstanceMap.has(g) ? p
												.addMessageSequence({
													key: Cp,
													message: t
												}) : (t.type !== Zn.MSG_GRP_TIP && p
													.addMessageDelay({
														currentTime: Date.now(),
														time: t.time
													}), p.addMessageSequence({
														key: kp,
														message: t
													}))
										}
										n.push(t)
									}
								}
							} else Gi.warn("".concat(this._className,
								".onMessage 未处理的 event 类型: ").concat(e[s].event));
						if (0 !== n.length) {
							this._groupModule.filterModifiedMessage(n);
							var h = this.packConversationOption(n);
							if (h.length > 0) this._getModule(Ku).onNewMessage({
								conversationOptionsList: h,
								isInstantMessage: !0
							});
							Gi.debug("".concat(this._className, ".onMessage count:").concat(n
								.length)), this._checkMessageStacked(n);
							var f = this._groupModule.filterUnmodifiedMessage(n);
							f.length > 0 && this._groupModule.emitOuterEvent(Qn
								.MESSAGE_RECEIVED, f), n.length = 0
						}
					}
				}
			}, {
				key: "_checkMessageStacked",
				value: function(e) {
					var t = e.length;
					t >= 100 && (Gi.warn("".concat(this._className,
						"._checkMessageStacked 直播群消息堆积数:").concat(e.length,
						'！可能会导致微信小程序渲染时遇到 "Dom limit exceeded" 的错误，建议接入侧此时只渲染最近的10条消息'
						)), this._reportMessageStackedCount < 5 && (new Lp(Fg)
						.setNetworkType(this._groupModule.getNetworkType()).setMessage(
							"count:".concat(t, " groupID:").concat(v(this
								._joinedGroupMap.keys()))).setLevel("warning").end(),
						this._reportMessageStackedCount += 1))
				}
			}, {
				key: "_isMessageSentByCurrentInstance",
				value: function(e) {
					return !!this._getModule(Ku).isMessageSentByCurrentInstance(e)
				}
			}, {
				key: "packMessage",
				value: function(e, t) {
					e.currentUser = this._groupModule.getMyUserID(), e.conversationType = 5 ===
						t ? Zn.CONV_SYSTEM : Zn.CONV_GROUP, e.isSystemMessage = !!e
						.isSystemMessage;
					var n = new A_(e),
						o = this.packElements(e, t);
					return n.setElement(o), n
				}
			}, {
				key: "packElements",
				value: function(e, n) {
					return 4 === n || 6 === n ? (this._updateMemberCountByGroupTips(e), {
						type: Zn.MSG_GRP_TIP,
						content: t(t({}, e.elements), {}, {
							groupProfile: e.groupProfile
						})
					}) : 5 === n ? {
						type: Zn.MSG_GRP_SYS_NOTICE,
						content: t(t({}, e.elements), {}, {
							groupProfile: e.groupProfile
						})
					} : this._getModule(Yu).parseElements(e.elements, e.from)
				}
			}, {
				key: "packConversationOption",
				value: function(e) {
					for (var t = new Map, n = 0; n < e.length; n++) {
						var o = e[n],
							r = o.conversationID;
						if (t.has(r)) {
							var a = t.get(r);
							a.lastMessage = o, "in" === o.flow && a.unreadCount++
						} else t.set(r, {
							conversationID: o.conversationID,
							unreadCount: "out" === o.flow ? 0 : 1,
							type: o.conversationType,
							subType: o.conversationSubType,
							lastMessage: o
						})
					}
					return v(t.values())
				}
			}, {
				key: "_updateMemberCountByGroupTips",
				value: function(e) {
					var t = e.groupProfile.groupID,
						n = e.elements.onlineMemberInfo,
						o = void 0 === n ? void 0 : n;
					if (!Tc(o)) {
						var r = o.onlineMemberNum,
							a = void 0 === r ? 0 : r,
							s = o.expireTime,
							i = void 0 === s ? this.DEFAULT_EXPIRE_TIME : s,
							c = this._onlineMemberCountMap.get(t) || {},
							u = Date.now();
						Tc(c) ? Object.assign(c, {
								lastReqTime: 0,
								lastSyncTime: 0,
								latestUpdateTime: u,
								memberCount: a,
								expireTime: i
							}) : (c.latestUpdateTime = u, c.memberCount = a), Gi.debug(""
								.concat(this._className,
								"._updateMemberCountByGroupTips info:"), c), this
							._onlineMemberCountMap.set(t, c)
					}
				}
			}, {
				key: "start",
				value: function(e) {
					if (this._pollingInstanceMap.has(e)) {
						var t = this._pollingInstanceMap.get(e);
						t.isRunning() || t.start()
					} else {
						var n = new Am({
							groupModule: this._groupModule,
							groupID: e,
							onInit: this._updateRequestData.bind(this),
							onSuccess: this._handleSuccess.bind(this),
							onFail: this._handleFailure.bind(this)
						});
						n.start(), this._pollingInstanceMap.set(e, n), Gi.log("".concat(this
							._className, ".start groupID:").concat(e))
					}
				}
			}, {
				key: "handleJoinResult",
				value: function(e) {
					var t = this;
					return this._preCheck().then((function() {
						var n = e.longPollingKey,
							o = e.group,
							r = o.groupID;
						return t._joinedGroupMap.set(r, o), t._groupModule
							.updateGroupMap([o]), t._groupModule
							.deleteUnjoinedAVChatRoom(r), t._groupModule
							.emitGroupListUpdate(!0, !1), ji(n) ? q_({
								status: c_,
								group: o
							}) : Promise.resolve()
					}))
				}
			}, {
				key: "startRunLoop",
				value: function(e) {
					var t = this;
					return this.handleJoinResult(e).then((function() {
						var n = e.longPollingKey,
							o = e.group,
							r = o.groupID;
						return t._pollingRequestInfoMap.set(r, {
							key: n,
							startSeq: 0
						}), t.start(r), t._groupModule.isLoggedIn() ? q_({
							status: c_,
							group: o
						}) : q_({
							status: c_
						})
					}))
				}
			}, {
				key: "_preCheck",
				value: function() {
					if (this._getModule(Bu).isUnlimitedAVChatRoom()) return Promise.resolve();
					if (!this.hasJoinedAVChatRoom()) return Promise.resolve();
					var e = m(this._joinedGroupMap.entries().next().value, 2),
						t = e[0],
						n = e[1];
					if (this._groupModule.isLoggedIn()) {
						if (!(n.selfInfo.role === Zn.GRP_MBR_ROLE_OWNER || n.ownerID === this
								._groupModule.getMyUserID())) return this._groupModule
							.quitGroup(t);
						this._groupModule.deleteLocalGroupAndConversation(t)
					} else this._groupModule.deleteLocalGroupAndConversation(t);
					return this.reset(t), Promise.resolve()
				}
			}, {
				key: "joinWithoutAuth",
				value: function(e) {
					var t = this,
						n = e.groupID,
						o = "".concat(this._className, ".joinWithoutAuth"),
						r = new Lp(kg);
					return this._groupModule.request({
						protocolName: Ll,
						requestData: e
					}).then((function(e) {
						var a = e.data.longPollingKey;
						if (r.setNetworkType(t._groupModule.getNetworkType())
							.setMessage("groupID:".concat(n, " longPollingKey:")
								.concat(a)).end(!0), ji(a)) return x_(new G_({
							code: cd
								.CANNOT_JOIN_NON_AVCHATROOM_WITHOUT_LOGIN,
							message: Qd
						}));
						Gi.log("".concat(o, " ok. groupID:").concat(n)), t
							._getModule(Ku).setCompleted("".concat(Zn.CONV_GROUP)
								.concat(n));
						var s = new Mm({
							groupID: n
						});
						return t.startRunLoop({
							group: s,
							longPollingKey: a
						}), O_({
							status: c_
						})
					})).catch((function(e) {
						return Gi.error("".concat(o, " failed. groupID:").concat(n,
							" error:"), e), t._groupModule.probeNetwork().then((
							function(t) {
								var o = m(t, 2),
									a = o[0],
									s = o[1];
								r.setError(e, a, s).setMessage("groupID:"
									.concat(n)).end(!0)
							})), x_(e)
					})).finally((function() {
						t._groupModule.getModule(Hu).reportAtOnce()
					}))
				}
			}, {
				key: "getGroupOnlineMemberCount",
				value: function(e) {
					var t = this._onlineMemberCountMap.get(e) || {},
						n = Date.now();
					return Tc(t) || n - t.lastSyncTime > 1e3 * t.expireTime && n - t
						.latestUpdateTime > 1e4 && n - t.lastReqTime > 3e3 ? (t.lastReqTime = n,
							this._onlineMemberCountMap.set(e, t), this
							._getGroupOnlineMemberCount(e).then((function(e) {
								return O_({
									memberCount: e.memberCount
								})
							})).catch((function(e) {
								return x_(e)
							}))) : q_({
							memberCount: t.memberCount
						})
				}
			}, {
				key: "_getGroupOnlineMemberCount",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, "._getGroupOnlineMemberCount");
					return this._groupModule.request({
						protocolName: jl,
						requestData: {
							groupID: e
						}
					}).then((function(o) {
						var r = t._onlineMemberCountMap.get(e) || {},
							a = o.data,
							s = a.onlineMemberNum,
							i = void 0 === s ? 0 : s,
							c = a.expireTime,
							u = void 0 === c ? t.DEFAULT_EXPIRE_TIME : c;
						Gi.log("".concat(n, " ok. groupID:").concat(e,
								" memberCount:").concat(i, " expireTime:")
							.concat(u));
						var l = Date.now();
						return Tc(r) && (r.lastReqTime = l), t._onlineMemberCountMap
							.set(e, Object.assign(r, {
								lastSyncTime: l,
								latestUpdateTime: l,
								memberCount: i,
								expireTime: u
							})), {
								memberCount: i
							}
					})).catch((function(o) {
						return Gi.warn("".concat(n, " failed. error:"), o), new Lp(
								Pg).setCode(o.code).setMessage("groupID:".concat(e,
								" error:").concat(JSON.stringify(o)))
							.setNetworkType(t._groupModule.getNetworkType()).end(),
							Promise.reject(o)
					}))
				}
			}, {
				key: "_getModule",
				value: function(e) {
					return this._groupModule.getModule(e)
				}
			}, {
				key: "reset",
				value: function(e) {
					if (e) {
						Gi.log("".concat(this._className, ".reset groupID:").concat(e));
						var t = this._pollingInstanceMap.get(e);
						t && t.stop(), this._pollingInstanceMap.delete(e), this._joinedGroupMap
							.delete(e), this._pollingRequestInfoMap.delete(e), this
							._onlineMemberCountMap.delete(e)
					} else {
						Gi.log("".concat(this._className, ".reset all"));
						var n, o = E(this._pollingInstanceMap.values());
						try {
							for (o.s(); !(n = o.n()).done;) {
								n.value.stop()
							}
						} catch (r) {
							o.e(r)
						} finally {
							o.f()
						}
						this._pollingInstanceMap.clear(), this._joinedGroupMap.clear(), this
							._pollingRequestInfoMap.clear(), this._onlineMemberCountMap.clear()
					}
					this.sequencesLinkedList.reset(), this.messageIDLinkedList.reset(), this
						.receivedMessageCount = 0, this._reportMessageStackedCount = 0
				}
			}]), e
		}(),
		Rm = 1,
		wm = 15,
		bm = function() {
			function e(t) {
				o(this, e), this._groupModule = t, this._className = "GroupSystemNoticeHandler", this
					.pendencyMap = new Map
			}
			return a(e, [{
				key: "onNewGroupSystemNotice",
				value: function(e) {
					var t = e.dataList,
						n = e.isSyncingEnded,
						o = e.isInstantMessage;
					Gi.debug("".concat(this._className, ".onReceiveSystemNotice count:").concat(
						t.length));
					var r = this.newSystemNoticeStoredAndSummary({
							notifiesList: t,
							isInstantMessage: o
						}),
						a = r.eventDataList,
						s = r.result;
					a.length > 0 && (this._groupModule.getModule(Ku).onNewMessage({
						conversationOptionsList: a,
						isInstantMessage: o
					}), this._onReceivedGroupSystemNotice({
						result: s,
						isInstantMessage: o
					}));
					o ? s.length > 0 && this._groupModule.emitOuterEvent(Qn.MESSAGE_RECEIVED,
						s) : !0 === n && this._clearGroupSystemNotice()
				}
			}, {
				key: "newSystemNoticeStoredAndSummary",
				value: function(e) {
					var n = e.notifiesList,
						o = e.isInstantMessage,
						r = null,
						a = n.length,
						s = 0,
						i = [],
						c = {
							conversationID: Zn.CONV_SYSTEM,
							unreadCount: 0,
							type: Zn.CONV_SYSTEM,
							subType: null,
							lastMessage: null
						};
					for (s = 0; s < a; s++) {
						var u = n[s];
						if (u.elements.operationType !== wm) u.currentUser = this._groupModule
							.getMyUserID(), u.conversationType = Zn.CONV_SYSTEM, u
							.conversationID = Zn.CONV_SYSTEM, (r = new A_(u)).setElement({
								type: Zn.MSG_GRP_SYS_NOTICE,
								content: t(t({}, u.elements), {}, {
									groupProfile: u.groupProfile
								})
							}), r.isSystemMessage = !0, (1 === r.sequence && 1 === r.random ||
								2 === r.sequence && 2 === r.random) && (r.sequence = tc(), r
								.random = tc(), r.generateMessageID(u.currentUser), Gi.log(""
									.concat(this._className,
										".newSystemNoticeStoredAndSummary sequence and random maybe duplicated, regenerate. ID:"
										).concat(r.ID))), this._groupModule.getModule(Ku)
							.pushIntoNoticeResult(i, r) && (o ? c.unreadCount++ : r.setIsRead(!
								0), c.subType = r.conversationSubType)
					}
					return c.lastMessage = i[i.length - 1], {
						eventDataList: i.length > 0 ? [c] : [],
						result: i
					}
				}
			}, {
				key: "_clearGroupSystemNotice",
				value: function() {
					var e = this;
					this.getPendencyList().then((function(t) {
						t.forEach((function(t) {
							e.pendencyMap.set("".concat(t.from, "_")
								.concat(t.groupID, "_").concat(t
								.to), t)
						}));
						var n = e._groupModule.getModule(Ku).getLocalMessageList(Zn
								.CONV_SYSTEM),
							o = [];
						n.forEach((function(t) {
							var n = t.payload,
								r = n.operatorID,
								a = n.operationType,
								s = n.groupProfile;
							if (a === Rm) {
								var i = "".concat(r, "_").concat(s
										.groupID, "_").concat(s.to),
									c = e.pendencyMap.get(i);
								c && qi(c.handled) && 0 !== c.handled &&
									o.push(t)
							}
						})), e.deleteGroupSystemNotice({
							messageList: o
						})
					}))
				}
			}, {
				key: "deleteGroupSystemNotice",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".deleteGroupSystemNotice");
					return Bi(e.messageList) && 0 !== e.messageList.length ? (Gi.log("".concat(
						n) + e.messageList.map((function(e) {
						return e.ID
					}))), this._groupModule.request({
						protocolName: Vl,
						requestData: {
							messageListToDelete: e.messageList.map((function(e) {
								return {
									from: Zn.CONV_SYSTEM,
									messageSeq: e.clientSequence,
									messageRandom: e.random
								}
							}))
						}
					}).then((function() {
						Gi.log("".concat(n, " ok"));
						var o = t._groupModule.getModule(Ku);
						return e.messageList.forEach((function(e) {
							o.deleteLocalMessage(e)
						})), O_()
					})).catch((function(e) {
						return Gi.error("".concat(n, " error:"), e), x_(e)
					}))) : q_()
				}
			}, {
				key: "getPendencyList",
				value: function(e) {
					var t = this;
					return this._groupModule.request({
						protocolName: xl,
						requestData: {
							startTime: e && e.startTime ? e.startTime : 0,
							limit: e && e.limit ? e.limit : 10,
							handleAccount: this._groupModule.getMyUserID()
						}
					}).then((function(e) {
						var n = e.data.pendencyList;
						return 0 !== e.data.nextStartTime ? t.getPendencyList({
							startTime: e.data.nextStartTime
						}).then((function(e) {
							return [].concat(v(n), v(e))
						})) : n
					}))
				}
			}, {
				key: "_onReceivedGroupSystemNotice",
				value: function(e) {
					var t = this,
						n = e.result;
					e.isInstantMessage && n.forEach((function(e) {
						switch (e.payload.operationType) {
							case 1:
								break;
							case 2:
								t._onApplyGroupRequestAgreed(e);
								break;
							case 3:
								break;
							case 4:
								t._onMemberKicked(e);
								break;
							case 5:
								t._onGroupDismissed(e);
								break;
							case 6:
								break;
							case 7:
								t._onInviteGroup(e);
								break;
							case 8:
								t._onQuitGroup(e);
								break;
							case 9:
								t._onSetManager(e);
								break;
							case 10:
								t._onDeleteManager(e)
						}
					}))
				}
			}, {
				key: "_onApplyGroupRequestAgreed",
				value: function(e) {
					var t = this,
						n = e.payload.groupProfile.groupID;
					this._groupModule.hasLocalGroup(n) || this._groupModule.getGroupProfile({
						groupID: n
					}).then((function(e) {
						var n = e.data.group;
						n && (t._groupModule.updateGroupMap([n]), t._groupModule
							.emitGroupListUpdate())
					}))
				}
			}, {
				key: "_onMemberKicked",
				value: function(e) {
					var t = e.payload.groupProfile.groupID;
					this._groupModule.hasLocalGroup(t) && this._groupModule
						.deleteLocalGroupAndConversation(t)
				}
			}, {
				key: "_onGroupDismissed",
				value: function(e) {
					var t = e.payload.groupProfile.groupID;
					this._groupModule.hasLocalGroup(t) && this._groupModule
						.deleteLocalGroupAndConversation(t);
					var n = this._groupModule._AVChatRoomHandler;
					n && n.checkJoinedAVChatRoomByID(t) && n.reset(t)
				}
			}, {
				key: "_onInviteGroup",
				value: function(e) {
					var t = this,
						n = e.payload.groupProfile.groupID;
					this._groupModule.hasLocalGroup(n) || this._groupModule.getGroupProfile({
						groupID: n
					}).then((function(e) {
						var n = e.data.group;
						n && (t._groupModule.updateGroupMap([n]), t._groupModule
							.emitGroupListUpdate())
					}))
				}
			}, {
				key: "_onQuitGroup",
				value: function(e) {
					var t = e.payload.groupProfile.groupID;
					this._groupModule.hasLocalGroup(t) && this._groupModule
						.deleteLocalGroupAndConversation(t)
				}
			}, {
				key: "_onSetManager",
				value: function(e) {
					var t = e.payload.groupProfile,
						n = t.to,
						o = t.groupID,
						r = this._groupModule.getModule(Vu).getLocalGroupMemberInfo(o, n);
					r && r.updateRole(Zn.GRP_MBR_ROLE_ADMIN)
				}
			}, {
				key: "_onDeleteManager",
				value: function(e) {
					var t = e.payload.groupProfile,
						n = t.to,
						o = t.groupID,
						r = this._groupModule.getModule(Vu).getLocalGroupMemberInfo(o, n);
					r && r.updateRole(Zn.GRP_MBR_ROLE_MEMBER)
				}
			}, {
				key: "reset",
				value: function() {
					this.pendencyMap.clear()
				}
			}]), e
		}(),
		Pm = function(e) {
			i(r, e);
			var n = _(r);

			function r(e) {
				var t;
				return o(this, r), (t = n.call(this, e))._className = "GroupModule", t._commonGroupHandler =
					null, t._AVChatRoomHandler = null, t._groupSystemNoticeHandler = null, t
					._commonGroupHandler = new Nm(h(t)), t._AVChatRoomHandler = new Lm(h(t)), t
					._groupTipsHandler = new Em(h(t)), t._groupSystemNoticeHandler = new bm(h(t)), t.groupMap =
					new Map, t._unjoinedAVChatRoomList = new Map, t
			}
			return a(r, [{
				key: "onCheckTimer",
				value: function(e) {
					this.isLoggedIn() && (this._commonGroupHandler.onCheckTimer(e), this
						._groupTipsHandler.onCheckTimer(e))
				}
			}, {
				key: "guardForAVChatRoom",
				value: function(e) {
					var t = this;
					if (e.conversationType === Zn.CONV_GROUP) {
						var n = e.to;
						return this.hasLocalGroup(n) ? q_() : this.getGroupProfile({
							groupID: n
						}).then((function(o) {
							var r = o.data.group.type;
							if (Gi.log("".concat(t._className,
									".guardForAVChatRoom. groupID:").concat(n,
									" type:").concat(r)), r === Zn.GRP_AVCHATROOM) {
								var a = "userId:".concat(e.from, " 未加入群 groupID:")
									.concat(n,
										"。发消息前先使用 joinGroup 接口申请加群，详细请参考 https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#joinGroup"
										);
								return Gi.warn("".concat(t._className,
									".guardForAVChatRoom sendMessage not allowed. "
									).concat(a)), x_(new G_({
									code: cd.MESSAGE_SEND_FAIL,
									message: a,
									data: {
										message: e
									}
								}))
							}
							return q_()
						}))
					}
					return q_()
				}
			}, {
				key: "checkJoinedAVChatRoomByID",
				value: function(e) {
					return !!this._AVChatRoomHandler && this._AVChatRoomHandler
						.checkJoinedAVChatRoomByID(e)
				}
			}, {
				key: "onNewGroupMessage",
				value: function(e) {
					this._commonGroupHandler && this._commonGroupHandler.onNewGroupMessage(e)
				}
			}, {
				key: "updateNextMessageSeq",
				value: function(e) {
					var t = this;
					Bi(e) && e.forEach((function(e) {
						var n = e.conversationID.replace(Zn.CONV_GROUP, "");
						t.groupMap.has(n) && (t.groupMap.get(n).nextMessageSeq = e
							.lastMessage.sequence + 1)
					}))
				}
			}, {
				key: "onNewGroupTips",
				value: function(e) {
					this._groupTipsHandler && this._groupTipsHandler.onNewGroupTips(e)
				}
			}, {
				key: "onGroupMessageRevoked",
				value: function(e) {
					this._commonGroupHandler && this._commonGroupHandler.onGroupMessageRevoked(
						e)
				}
			}, {
				key: "onNewGroupSystemNotice",
				value: function(e) {
					this._groupSystemNoticeHandler && this._groupSystemNoticeHandler
						.onNewGroupSystemNotice(e)
				}
			}, {
				key: "onGroupMessageReadNotice",
				value: function(e) {
					var t = this;
					e.dataList.forEach((function(e) {
						var n = e.elements.groupMessageReadNotice;
						if (!ji(n)) {
							var o = t.getModule(Ku);
							n.forEach((function(e) {
								var n = e.groupID,
									r = e.lastMessageSeq;
								Gi.debug("".concat(t._className,
									".onGroupMessageReadNotice groupID:"
									).concat(n,
									" lastMessageSeq:").concat(
									r));
								var a = "".concat(Zn.CONV_GROUP).concat(
									n);
								o.updateIsReadAfterReadReport({
									conversationID: a,
									lastMessageSeq: r
								}), o.updateUnreadCount(a)
							}))
						}
					}))
				}
			}, {
				key: "deleteGroupSystemNotice",
				value: function(e) {
					this._groupSystemNoticeHandler && this._groupSystemNoticeHandler
						.deleteGroupSystemNotice(e)
				}
			}, {
				key: "initGroupMap",
				value: function(e) {
					this.groupMap.set(e.groupID, new Mm(e))
				}
			}, {
				key: "deleteGroup",
				value: function(e) {
					this.groupMap.delete(e)
				}
			}, {
				key: "updateGroupMap",
				value: function(e) {
					var t = this;
					e.forEach((function(e) {
						t.groupMap.has(e.groupID) ? t.groupMap.get(e.groupID)
							.updateGroup(e) : t.groupMap.set(e.groupID, new Mm(e))
					})), this._setStorageGroupList()
				}
			}, {
				key: "getStorageGroupList",
				value: function() {
					return this.getModule(ju).getItem("groupMap")
				}
			}, {
				key: "_setStorageGroupList",
				value: function() {
					var e = this.getLocalGroupList().filter((function(e) {
						var t = e.type;
						return !dc(t)
					})).slice(0, 20).map((function(e) {
						return {
							groupID: e.groupID,
							name: e.name,
							avatar: e.avatar,
							type: e.type
						}
					}));
					this.getModule(ju).setItem("groupMap", e)
				}
			}, {
				key: "getGroupMap",
				value: function() {
					return this.groupMap
				}
			}, {
				key: "getLocalGroupList",
				value: function() {
					return v(this.groupMap.values())
				}
			}, {
				key: "getLocalGroupProfile",
				value: function(e) {
					return this.groupMap.get(e)
				}
			}, {
				key: "sortLocalGroupList",
				value: function() {
					var e = v(this.groupMap).filter((function(e) {
						var t = m(e, 2);
						t[0];
						return !Tc(t[1].lastMessage)
					}));
					e.sort((function(e, t) {
						return t[1].lastMessage.lastTime - e[1].lastMessage.lastTime
					})), this.groupMap = new Map(v(e))
				}
			}, {
				key: "updateGroupLastMessage",
				value: function(e) {
					this._commonGroupHandler && this._commonGroupHandler
						.handleUpdateGroupLastMessage(e)
				}
			}, {
				key: "emitGroupListUpdate",
				value: function() {
					var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0],
						t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],
						n = this.getLocalGroupList();
					if (e && this.emitOuterEvent(Qn.GROUP_LIST_UPDATED, n), t) {
						var o = JSON.parse(JSON.stringify(n)),
							r = this.getModule(Ku);
						r.updateConversationGroupProfile(o)
					}
				}
			}, {
				key: "getGroupList",
				value: function(e) {
					return this._commonGroupHandler ? this._commonGroupHandler.getGroupList(e) :
						q_()
				}
			}, {
				key: "getGroupProfile",
				value: function(e) {
					var t = this,
						n = new Lp(yg),
						o = "".concat(this._className, ".getGroupProfile"),
						r = e.groupID,
						a = e.groupCustomFieldFilter;
					Gi.log("".concat(o, " groupID:").concat(r));
					var s = {
						groupIDList: [r],
						responseFilter: {
							groupBaseInfoFilter: ["Type", "Name", "Introduction",
								"Notification", "FaceUrl", "Owner_Account",
								"CreateTime", "InfoSeq", "LastInfoTime", "LastMsgTime",
								"MemberNum", "MaxMemberNum", "ApplyJoinOption",
								"NextMsgSeq", "ShutUpAllMember"
							],
							groupCustomFieldFilter: a
						}
					};
					return this.getGroupProfileAdvance(s).then((function(e) {
						var a, s = e.data,
							i = s.successGroupList,
							c = s.failureGroupList;
						return Gi.log("".concat(o, " ok")), c.length > 0 ? x_(c[
							0]) : (dc(i[0].type) && !t.hasLocalGroup(r) ? a =
								new Mm(i[0]) : (t.updateGroupMap(i), a = t
									.getLocalGroupProfile(r)), n.setNetworkType(t
									.getNetworkType()).setMessage("groupID:".concat(
									r, " type:").concat(a.type,
									" muteAllMembers:").concat(a.muteAllMembers,
									" ownerID:").concat(a.ownerID)).end(), a && a
								.selfInfo && !a.selfInfo.nameCard ? t
								.updateSelfInfo(a).then((function(e) {
									return O_({
										group: e
									})
								})) : O_({
									group: a
								}))
					})).catch((function(r) {
						return t.probeNetwork().then((function(t) {
							var o = m(t, 2),
								a = o[0],
								s = o[1];
							n.setError(r, a, s).setMessage("groupID:"
								.concat(e.groupID)).end()
						})), Gi.error("".concat(o, " failed. error:"), r), x_(r)
					}))
				}
			}, {
				key: "getGroupProfileAdvance",
				value: function(e) {
					var t = "".concat(this._className, ".getGroupProfileAdvance");
					return Bi(e.groupIDList) && e.groupIDList.length > 50 && (Gi.warn("".concat(
						t, " 获取群资料的数量不能超过50个")), e.groupIDList.length = 50), Gi.log(""
						.concat(t, " groupIDList:").concat(e.groupIDList)), this.request({
						protocolName: kl,
						requestData: e
					}).then((function(e) {
						Gi.log("".concat(t, " ok"));
						var n = e.data.groups,
							o = n.filter((function(e) {
								return ji(e.errorCode) || 0 === e.errorCode
							})),
							r = n.filter((function(e) {
								return e.errorCode && 0 !== e.errorCode
							})).map((function(e) {
								return new G_({
									code: e.errorCode,
									message: e.errorInfo,
									data: {
										groupID: e.groupID
									}
								})
							}));
						return O_({
							successGroupList: o,
							failureGroupList: r
						})
					})).catch((function(e) {
						return Gi.error("".concat(t, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "updateSelfInfo",
				value: function(e) {
					var t = "".concat(this._className, ".updateSelfInfo"),
						n = e.groupID;
					return Gi.log("".concat(t, " groupID:").concat(n)), this.getModule(Vu)
						.getGroupMemberProfile({
							groupID: n,
							userIDList: [this.getMyUserID()]
						}).then((function(n) {
							var o = n.data.memberList;
							return Gi.log("".concat(t, " ok")), e && 0 !== o.length && e
								.updateSelfInfo(o[0]), e
						}))
				}
			}, {
				key: "createGroup",
				value: function(e) {
					var n = this,
						o = "".concat(this._className, ".createGroup");
					if (!["Public", "Private", "ChatRoom", "AVChatRoom"].includes(e.type)) {
						var r = new G_({
							code: cd.ILLEGAL_GROUP_TYPE,
							message: jd
						});
						return x_(r)
					}
					dc(e.type) && !ji(e.memberList) && e.memberList.length > 0 && (Gi.warn(""
							.concat(o, " 创建 AVChatRoom 时不能添加群成员，自动忽略该字段")), e.memberList =
						void 0), lc(e.type) || ji(e.joinOption) || (Gi.warn("".concat(o,
							" 创建 Work/Meeting/AVChatRoom 群时不能设置字段 joinOption，自动忽略该字段")), e
						.joinOption = void 0);
					var a = new Lp(ug);
					Gi.log("".concat(o, " options:"), e);
					var s = [];
					return this.request({
						protocolName: Cl,
						requestData: t(t({}, e), {}, {
							ownerID: this.getMyUserID(),
							webPushFlag: 1
						})
					}).then((function(r) {
						var i = r.data,
							c = i.groupID,
							u = i.overLimitUserIDList,
							l = void 0 === u ? [] : u;
						if (s = l, a.setNetworkType(n.getNetworkType()).setMessage(
								"groupType:".concat(e.type, " groupID:").concat(c,
									" overLimitUserIDList=").concat(l)).end(), Gi
							.log("".concat(o, " ok groupID:").concat(c,
								" overLimitUserIDList:"), l), e.type === Zn
							.GRP_AVCHATROOM) return n.getGroupProfile({
							groupID: c
						});
						Tc(e.memberList) || Tc(l) || (e.memberList = e.memberList
							.filter((function(e) {
								return -1 === l.indexOf(e.userID)
							}))), n.updateGroupMap([t(t({}, e), {}, {
							groupID: c
						})]);
						var d = n.getModule(Gu),
							p = d.createCustomMessage({
								to: c,
								conversationType: Zn.CONV_GROUP,
								payload: {
									data: "group_create",
									extension: "".concat(n.getMyUserID(),
										"创建群组")
								}
							});
						return d.sendMessageInstance(p), n.emitGroupListUpdate(), n
							.getGroupProfile({
								groupID: c
							})
					})).then((function(e) {
						var t = e.data.group,
							n = t.selfInfo,
							o = n.nameCard,
							r = n.joinTime;
						return t.updateSelfInfo({
							nameCard: o,
							joinTime: r,
							messageRemindType: Zn.MSG_REMIND_ACPT_AND_NOTE,
							role: Zn.GRP_MBR_ROLE_OWNER
						}), O_({
							group: t,
							overLimitUserIDList: s
						})
					})).catch((function(t) {
						return a.setMessage("groupType:".concat(e.type)), n
							.probeNetwork().then((function(e) {
								var n = m(e, 2),
									o = n[0],
									r = n[1];
								a.setError(t, o, r).end()
							})), Gi.error("".concat(o, " failed. error:"), t), x_(t)
					}))
				}
			}, {
				key: "dismissGroup",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".dismissGroup");
					if (this.hasLocalGroup(e) && this.getLocalGroupProfile(e).type === Zn
						.GRP_WORK) return x_(new G_({
						code: cd.CANNOT_DISMISS_WORK,
						message: zd
					}));
					var o = new Lp(mg);
					return o.setMessage("groupID:".concat(e)), Gi.log("".concat(n, " groupID:")
						.concat(e)), this.request({
						protocolName: Nl,
						requestData: {
							groupID: e
						}
					}).then((function() {
						return o.setNetworkType(t.getNetworkType()).end(), Gi.log(""
								.concat(n, " ok")), t
							.deleteLocalGroupAndConversation(e), t
							.checkJoinedAVChatRoomByID(e) && t._AVChatRoomHandler
							.reset(e), O_({
								groupID: e
							})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								r = n[0],
								a = n[1];
							o.setError(e, r, a).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "updateGroupProfile",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".updateGroupProfile");
					!this.hasLocalGroup(e.groupID) || lc(this.getLocalGroupProfile(e.groupID)
						.type) || ji(e.joinOption) || (Gi.warn("".concat(n,
							" Work/Meeting/AVChatRoom 群不能设置字段 joinOption，自动忽略该字段")), e
						.joinOption = void 0), ji(e.muteAllMembers) || (e.muteAllMembers ? e
						.muteAllMembers = "On" : e.muteAllMembers = "Off");
					var o = new Lp(vg);
					return o.setMessage(JSON.stringify(e)), Gi.log("".concat(n, " groupID:")
						.concat(e.groupID)), this.request({
						protocolName: Al,
						requestData: e
					}).then((function() {
						(o.setNetworkType(t.getNetworkType()).end(), Gi.log(""
							.concat(n, " ok")), t.hasLocalGroup(e.groupID)) && (t
							.groupMap.get(e.groupID).updateGroup(e), t
							._setStorageGroupList());
						return O_({
							group: t.groupMap.get(e.groupID)
						})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								r = n[0],
								a = n[1];
							o.setError(e, r, a).end()
						})), Gi.log("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "joinGroup",
				value: function(e) {
					var t = this,
						n = e.groupID,
						o = e.type,
						r = "".concat(this._className, ".joinGroup");
					if (o === Zn.GRP_WORK) {
						var a = new G_({
							code: cd.CANNOT_JOIN_WORK,
							message: Hd
						});
						return x_(a)
					}
					if (this.deleteUnjoinedAVChatRoom(n), this.hasLocalGroup(n)) {
						if (!this.isLoggedIn()) return q_({
							status: Zn.JOIN_STATUS_ALREADY_IN_GROUP
						});
						var s = new Lp(lg);
						return this.getGroupProfile({
							groupID: n
						}).then((function() {
							return s.setNetworkType(t.getNetworkType()).setMessage(
								"groupID:".concat(n, " joinedStatus:").concat(Zn
									.JOIN_STATUS_ALREADY_IN_GROUP)).end(), q_({
								status: Zn.JOIN_STATUS_ALREADY_IN_GROUP
							})
						})).catch((function(o) {
							return s.setNetworkType(t.getNetworkType()).setMessage(
									"groupID:".concat(n, " unjoined")).end(), Gi
								.warn("".concat(r, " ").concat(n,
									" was unjoined, now join!")), t.groupMap.delete(
									n), t.applyJoinGroup(e)
						}))
					}
					return Gi.log("".concat(r, " groupID:").concat(n)), this.isLoggedIn() ? this
						.applyJoinGroup(e) : this._AVChatRoomHandler.joinWithoutAuth(e)
				}
			}, {
				key: "applyJoinGroup",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".applyJoinGroup"),
						o = e.groupID,
						r = new Lp(lg);
					return this.request({
						protocolName: Ol,
						requestData: e
					}).then((function(e) {
						var a = e.data,
							s = a.joinedStatus,
							i = a.longPollingKey,
							c = a.avChatRoomFlag,
							u = "groupID:".concat(o, " joinedStatus:").concat(s,
								" longPollingKey:").concat(i, " avChatRoomFlag:")
							.concat(c);
						switch (r.setNetworkType(t.getNetworkType()).setMessage(""
								.concat(u)).end(), Gi.log("".concat(n, " ok. ")
								.concat(u)), s) {
							case u_:
								return O_({
									status: u_
								});
							case c_:
								return t.getGroupProfile({
									groupID: o
								}).then((function(e) {
									var n = e.data.group,
										r = {
											status: c_,
											group: n
										};
									return 1 === c ? (t.getModule(Ku)
										.setCompleted("".concat(Zn
											.CONV_GROUP).concat(
											o)), ji(i) ? t
										._AVChatRoomHandler
										.handleJoinResult({
											group: n
										}) : t._AVChatRoomHandler
										.startRunLoop({
											longPollingKey: i,
											group: n
										})) : (t
										.emitGroupListUpdate(!0, !
										1), O_(r))
								}));
							default:
								var l = new G_({
									code: cd.JOIN_GROUP_FAIL,
									message: Jd
								});
								return Gi.error("".concat(n, " error:"), l), x_(l)
						}
					})).catch((function(o) {
						return r.setMessage("groupID:".concat(e.groupID)), t
							.probeNetwork().then((function(e) {
								var t = m(e, 2),
									n = t[0],
									a = t[1];
								r.setError(o, n, a).end()
							})), Gi.error("".concat(n, " error:"), o), x_(o)
					}))
				}
			}, {
				key: "quitGroup",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".quitGroup");
					Gi.log("".concat(n, " groupID:").concat(e));
					var o = this.checkJoinedAVChatRoomByID(e);
					if (!o && !this.hasLocalGroup(e)) {
						var r = new G_({
							code: cd.MEMBER_NOT_IN_GROUP,
							message: Wd
						});
						return x_(r)
					}
					if (o && !this.isLoggedIn()) return Gi.log("".concat(n,
							" anonymously ok. groupID:").concat(e)), this
						.deleteLocalGroupAndConversation(e), this._AVChatRoomHandler.reset(
							e), q_({
							groupID: e
						});
					var a = new Lp(dg);
					return a.setMessage("groupID:".concat(e)), this.request({
						protocolName: Rl,
						requestData: {
							groupID: e
						}
					}).then((function() {
						return a.setNetworkType(t.getNetworkType()).end(), Gi.log(""
							.concat(n, " ok")), o && t._AVChatRoomHandler.reset(
							e), t.deleteLocalGroupAndConversation(e), O_({
							groupID: e
						})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							a.setError(e, o, r).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "searchGroupByID",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".searchGroupByID"),
						o = {
							groupIDList: [e]
						},
						r = new Lp(pg);
					return r.setMessage("groupID:".concat(e)), Gi.log("".concat(n, " groupID:")
						.concat(e)), this.request({
						protocolName: wl,
						requestData: o
					}).then((function(e) {
						var o = e.data.groupProfile;
						if (0 !== o[0].errorCode) throw new G_({
							code: o[0].errorCode,
							message: o[0].errorInfo
						});
						return r.setNetworkType(t.getNetworkType()).end(), Gi.log(""
							.concat(n, " ok")), O_({
							group: new Mm(o[0])
						})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								a = n[1];
							r.setError(e, o, a).end()
						})), Gi.warn("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "changeGroupOwner",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".changeGroupOwner");
					if (this.hasLocalGroup(e.groupID) && this.getLocalGroupProfile(e.groupID)
						.type === Zn.GRP_AVCHATROOM) return x_(new G_({
						code: cd.CANNOT_CHANGE_OWNER_IN_AVCHATROOM,
						message: $d
					}));
					if (e.newOwnerID === this.getMyUserID()) return x_(new G_({
						code: cd.CANNOT_CHANGE_OWNER_TO_SELF,
						message: Yd
					}));
					var o = new Lp(gg);
					return o.setMessage("groupID:".concat(e.groupID, " newOwnerID:").concat(e
							.newOwnerID)), Gi.log("".concat(n, " groupID:").concat(e.groupID)),
						this.request({
							protocolName: bl,
							requestData: e
						}).then((function() {
							o.setNetworkType(t.getNetworkType()).end(), Gi.log(""
								.concat(n, " ok"));
							var r = e.groupID,
								a = e.newOwnerID;
							t.groupMap.get(r).ownerID = a;
							var s = t.getModule(Vu).getLocalGroupMemberList(r);
							if (s instanceof Map) {
								var i = s.get(t.getMyUserID());
								ji(i) || (i.updateRole("Member"), t.groupMap.get(r)
									.selfInfo.role = "Member");
								var c = s.get(a);
								ji(c) || c.updateRole("Owner")
							}
							return t.emitGroupListUpdate(!0, !1), O_({
								group: t.groupMap.get(r)
							})
						})).catch((function(e) {
							return t.probeNetwork().then((function(t) {
								var n = m(t, 2),
									r = n[0],
									a = n[1];
								o.setError(e, r, a).end()
							})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
						}))
				}
			}, {
				key: "handleGroupApplication",
				value: function(e) {
					var n = this,
						o = "".concat(this._className, ".handleGroupApplication"),
						r = e.message.payload,
						a = r.groupProfile.groupID,
						s = r.authentication,
						i = r.messageKey,
						c = r.operatorID,
						u = new Lp(hg);
					return u.setMessage("groupID:".concat(a)), Gi.log("".concat(o, " groupID:")
						.concat(a)), this.request({
						protocolName: Pl,
						requestData: t(t({}, e), {}, {
							applicant: c,
							groupID: a,
							authentication: s,
							messageKey: i
						})
					}).then((function() {
						return u.setNetworkType(n.getNetworkType()).end(), Gi.log(""
								.concat(o, " ok")), n._groupSystemNoticeHandler
							.deleteGroupSystemNotice({
								messageList: [e.message]
							}), O_({
								group: n.getLocalGroupProfile(a)
							})
					})).catch((function(e) {
						return n.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							u.setError(e, o, r).end()
						})), Gi.error("".concat(o, " failed. error"), e), x_(e)
					}))
				}
			}, {
				key: "handleGroupInvitation",
				value: function(e) {
					var n = this,
						o = "".concat(this._className, ".handleGroupInvitation"),
						r = e.message.payload,
						a = r.groupProfile.groupID,
						s = r.authentication,
						i = r.messageKey,
						c = r.operatorID,
						u = e.handleAction,
						l = new Lp(fg);
					return l.setMessage("groupID:".concat(a, " inviter:").concat(c,
							" handleAction:").concat(u)), Gi.log("".concat(o, " groupID:")
							.concat(a, " inviter:").concat(c, " handleAction:").concat(u)), this
						.request({
							protocolName: Gl,
							requestData: t(t({}, e), {}, {
								inviter: c,
								groupID: a,
								authentication: s,
								messageKey: i
							})
						}).then((function() {
							return l.setNetworkType(n.getNetworkType()).end(), Gi.log(""
									.concat(o, " ok")), n._groupSystemNoticeHandler
								.deleteGroupSystemNotice({
									messageList: [e.message]
								}), O_({
									group: n.getLocalGroupProfile(a)
								})
						})).catch((function(e) {
							return n.probeNetwork().then((function(t) {
								var n = m(t, 2),
									o = n[0],
									r = n[1];
								l.setError(e, o, r).end()
							})), Gi.error("".concat(o, " failed. error"), e), x_(e)
						}))
				}
			}, {
				key: "getGroupOnlineMemberCount",
				value: function(e) {
					return this._AVChatRoomHandler ? this._AVChatRoomHandler
						.checkJoinedAVChatRoomByID(e) ? this._AVChatRoomHandler
						.getGroupOnlineMemberCount(e) : q_({
							memberCount: 0
						}) : x_({
							code: cd.CANNOT_FIND_MODULE,
							message: fp
						})
				}
			}, {
				key: "hasLocalGroup",
				value: function(e) {
					return this.groupMap.has(e)
				}
			}, {
				key: "deleteLocalGroupAndConversation",
				value: function(e) {
					this._deleteLocalGroup(e), this.getModule(Ku).deleteLocalConversation(
						"GROUP".concat(e)), this.emitGroupListUpdate(!0, !1)
				}
			}, {
				key: "_deleteLocalGroup",
				value: function(e) {
					this.groupMap.delete(e), this.getModule(Vu).deleteGroupMemberList(e), this
						._setStorageGroupList()
				}
			}, {
				key: "sendMessage",
				value: function(e, t) {
					var n = this.createGroupMessagePack(e, t);
					return this.request(n)
				}
			}, {
				key: "createGroupMessagePack",
				value: function(e, t) {
					var n = null;
					t && t.offlinePushInfo && (n = t.offlinePushInfo);
					var o = "";
					xi(e.cloudCustomData) && e.cloudCustomData.length > 0 && (o = e
						.cloudCustomData);
					var r = e.getGroupAtInfoList();
					return {
						protocolName: ll,
						tjgID: this.generateTjgID(e),
						requestData: {
							fromAccount: this.getMyUserID(),
							groupID: e.to,
							msgBody: e.getElements(),
							cloudCustomData: o,
							random: e.random,
							priority: e.priority,
							clientSequence: e.clientSequence,
							groupAtInfo: e.type !== Zn.MSG_TEXT || Tc(r) ? void 0 : r,
							onlineOnlyFlag: this.isOnlineMessage(e, t) ? 1 : 0,
							offlinePushInfo: n ? {
								pushFlag: !0 === n.disablePush ? 1 : 0,
								title: n.title || "",
								desc: n.description || "",
								ext: n.extension || "",
								apnsInfo: {
									badgeMode: !0 === n.ignoreIOSBadge ? 1 : 0
								},
								androidInfo: {
									OPPOChannelID: n.androidOPPOChannelID || ""
								}
							} : void 0
						}
					}
				}
			}, {
				key: "revokeMessage",
				value: function(e) {
					return this.request({
						protocolName: Ul,
						requestData: {
							to: e.to,
							msgSeqList: [{
								msgSeq: e.sequence
							}]
						}
					})
				}
			}, {
				key: "deleteMessage",
				value: function(e) {
					var t = e.to,
						n = e.keyList;
					return Gi.log("".concat(this._className, ".deleteMessage groupID:").concat(
						t, " count:").concat(n.length)), this.request({
						protocolName: Hl,
						requestData: {
							groupID: t,
							deleter: this.getMyUserID(),
							keyList: n
						}
					})
				}
			}, {
				key: "getRoamingMessage",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".getRoamingMessage"),
						o = new Lp(Yp),
						r = 0;
					return this._computeLastSequence(e).then((function(n) {
						return r = n, Gi.log("".concat(t._className,
							".getRoamingMessage groupID:").concat(e.groupID,
							" lastSequence:").concat(r)), t.request({
							protocolName: ql,
							requestData: {
								groupID: e.groupID,
								count: 21,
								sequence: r
							}
						})
					})).then((function(a) {
						var s = a.data,
							i = s.messageList,
							c = s.complete;
						ji(i) ? Gi.log("".concat(n, " ok. complete:").concat(c,
							" but messageList is undefined!")) : Gi.log(""
							.concat(n, " ok. complete:").concat(c, " count:")
							.concat(i.length)), o.setNetworkType(t
							.getNetworkType()).setMessage("groupID:".concat(e
							.groupID, " lastSequence:").concat(r,
							" complete:").concat(c, " count:").concat(i ? i
							.length : "undefined")).end();
						var u = "GROUP".concat(e.groupID),
							l = t.getModule(Ku);
						if (2 === c || Tc(i)) return l.setCompleted(u), [];
						var d = l.storeRoamingMessage(i, u);
						return l.updateIsRead(u), l.patchConversationLastMessage(u),
							d
					})).catch((function(a) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								s = n[0],
								i = n[1];
							o.setError(a, s, i).setMessage("groupID:"
								.concat(e.groupID, " lastSequence:")
								.concat(r)).end()
						})), Gi.warn("".concat(n, " failed. error:"), a), x_(a)
					}))
				}
			}, {
				key: "setMessageRead",
				value: function(e) {
					var t = this,
						n = e.conversationID,
						o = e.lastMessageSeq,
						r = "".concat(this._className, ".setMessageRead");
					Gi.log("".concat(r, " conversationID:").concat(n, " lastMessageSeq:")
						.concat(o)), qi(o) || Gi.warn("".concat(r,
						" 请勿修改 Conversation.lastMessage.lastSequence，否则可能会导致已读上报结果不准确"));
					var a = new Lp(Xp);
					return a.setMessage("".concat(n, "-").concat(o)), this.request({
						protocolName: Fl,
						requestData: {
							groupID: n.replace("GROUP", ""),
							messageReadSeq: o
						}
					}).then((function() {
						a.setNetworkType(t.getNetworkType()).end(), Gi.log(""
							.concat(r, " ok."));
						var e = t.getModule(Ku);
						return e.updateIsReadAfterReadReport({
							conversationID: n,
							lastMessageSeq: o
						}), e.updateUnreadCount(n), O_()
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							a.setError(e, o, r).end()
						})), Gi.log("".concat(r, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "_computeLastSequence",
				value: function(e) {
					return e.sequence > 0 ? Promise.resolve(e.sequence) : this
						.getGroupLastSequence(e.groupID)
				}
			}, {
				key: "getGroupLastSequence",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".getGroupLastSequence"),
						o = new Lp(Sg),
						r = 0,
						a = "";
					if (this.hasLocalGroup(e)) {
						var s = this.getLocalGroupProfile(e),
							i = s.lastMessage;
						if (i.lastSequence > 0 && !1 === i.onlineOnlyFlag) return r = i
							.lastSequence, a = "got lastSequence:".concat(r,
								" from local group profile[lastMessage.lastSequence]. groupID:"
								).concat(e), Gi.log("".concat(n, " ").concat(a)), o
							.setNetworkType(this.getNetworkType()).setMessage("".concat(a))
							.end(), Promise.resolve(r);
						if (s.nextMessageSeq > 1) return r = s.nextMessageSeq - 1, a =
							"got lastSequence:".concat(r,
								" from local group profile[nextMessageSeq]. groupID:")
							.concat(e), Gi.log("".concat(n, " ").concat(a)), o
							.setNetworkType(this.getNetworkType()).setMessage("".concat(a))
							.end(), Promise.resolve(r)
					}
					var c = "GROUP".concat(e),
						u = this.getModule(Ku).getLocalConversation(c);
					if (u && u.lastMessage.lastSequence && !1 === u.lastMessage.onlineOnlyFlag)
						return r = u.lastMessage.lastSequence, a = "got lastSequence:".concat(r,
								" from local conversation profile[lastMessage.lastSequence]. groupID:"
								).concat(e), Gi.log("".concat(n, " ").concat(a)), o
							.setNetworkType(this.getNetworkType()).setMessage("".concat(a))
							.end(), Promise.resolve(r);
					var l = {
						groupIDList: [e],
						responseFilter: {
							groupBaseInfoFilter: ["NextMsgSeq"]
						}
					};
					return this.getGroupProfileAdvance(l).then((function(s) {
						var i = s.data.successGroupList;
						return Tc(i) ? Gi.log("".concat(n,
								" successGroupList is empty. groupID:").concat(
								e)) : (r = i[0].nextMessageSeq - 1, a =
								"got lastSequence:".concat(r,
									" from getGroupProfileAdvance. groupID:")
								.concat(e), Gi.log("".concat(n, " ").concat(a))), o
							.setNetworkType(t.getNetworkType()).setMessage(""
								.concat(a)).end(), r
					})).catch((function(r) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								a = n[0],
								s = n[1];
							o.setError(r, a, s).setMessage(
								"get lastSequence failed from getGroupProfileAdvance. groupID:"
								.concat(e)).end()
						})), Gi.warn("".concat(n, " failed. error:"), r), x_(r)
					}))
				}
			}, {
				key: "isMessageFromAVChatroom",
				value: function(e) {
					return !!this._AVChatRoomHandler && this._AVChatRoomHandler
						.checkJoinedAVChatRoomByID(e)
				}
			}, {
				key: "hasJoinedAVChatRoom",
				value: function() {
					return this._AVChatRoomHandler ? this._AVChatRoomHandler
						.hasJoinedAVChatRoom() : 0
				}
			}, {
				key: "getJoinedAVChatRoom",
				value: function() {
					return this._AVChatRoomHandler ? this._AVChatRoomHandler
						.getJoinedAVChatRoom() : []
				}
			}, {
				key: "isOnlineMessage",
				value: function(e, t) {
					return !(!this._canIUseOnlineOnlyFlag(e) || !t || !0 !== t.onlineUserOnly)
				}
			}, {
				key: "_canIUseOnlineOnlyFlag",
				value: function(e) {
					var t = this.getJoinedAVChatRoom();
					return !t || !t.includes(e.to) || e.conversationType !== Zn.CONV_GROUP
				}
			}, {
				key: "deleteLocalGroupMembers",
				value: function(e, t) {
					this.getModule(Vu).deleteLocalGroupMembers(e, t)
				}
			}, {
				key: "onAVChatRoomMessage",
				value: function(e) {
					this._AVChatRoomHandler && this._AVChatRoomHandler.onMessage(e)
				}
			}, {
				key: "getGroupSimplifiedInfo",
				value: function(e) {
					var t = this,
						n = new Lp(Dg),
						o = {
							groupIDList: [e],
							responseFilter: {
								groupBaseInfoFilter: ["Type", "Name"]
							}
						};
					return this.getGroupProfileAdvance(o).then((function(o) {
						var r = o.data.successGroupList;
						return n.setNetworkType(t.getNetworkType()).setMessage(
								"groupID:".concat(e, " type:").concat(r[0].type))
							.end(), r[0]
					})).catch((function(o) {
						t.probeNetwork().then((function(t) {
							var r = m(t, 2),
								a = r[0],
								s = r[1];
							n.setError(o, a, s).setMessage("groupID:"
								.concat(e)).end()
						}))
					}))
				}
			}, {
				key: "setUnjoinedAVChatRoom",
				value: function(e) {
					this._unjoinedAVChatRoomList.set(e, 1)
				}
			}, {
				key: "deleteUnjoinedAVChatRoom",
				value: function(e) {
					this._unjoinedAVChatRoomList.has(e) && this._unjoinedAVChatRoomList.delete(
						e)
				}
			}, {
				key: "isUnjoinedAVChatRoom",
				value: function(e) {
					return this._unjoinedAVChatRoomList.has(e)
				}
			}, {
				key: "reset",
				value: function() {
					this.groupMap.clear(), this._unjoinedAVChatRoomList.clear(), this
						._commonGroupHandler.reset(), this._groupSystemNoticeHandler.reset(),
						this._groupTipsHandler.reset(), this._AVChatRoomHandler && this
						._AVChatRoomHandler.reset()
				}
			}]), r
		}(ol),
		Gm = function() {
			function e(t) {
				o(this, e), this.userID = "", this.avatar = "", this.nick = "", this.role = "", this.joinTime =
					"", this.lastSendMsgTime = "", this.nameCard = "", this.muteUntil = 0, this
					.memberCustomField = [], this._initMember(t)
			}
			return a(e, [{
				key: "_initMember",
				value: function(e) {
					this.updateMember(e)
				}
			}, {
				key: "updateMember",
				value: function(e) {
					var t = [null, void 0, "", 0, NaN];
					e.memberCustomField && uc(this.memberCustomField, e.memberCustomField), Qi(
						this, e, ["memberCustomField"], t)
				}
			}, {
				key: "updateRole",
				value: function(e) {
					["Owner", "Admin", "Member"].indexOf(e) < 0 || (this.role = e)
				}
			}, {
				key: "updateMuteUntil",
				value: function(e) {
					ji(e) || (this.muteUntil = Math.floor((Date.now() + 1e3 * e) / 1e3))
				}
			}, {
				key: "updateNameCard",
				value: function(e) {
					ji(e) || (this.nameCard = e)
				}
			}, {
				key: "updateMemberCustomField",
				value: function(e) {
					e && uc(this.memberCustomField, e)
				}
			}]), e
		}(),
		Um = function(e) {
			i(r, e);
			var n = _(r);

			function r(e) {
				var t;
				return o(this, r), (t = n.call(this, e))._className = "GroupMemberModule", t
					.groupMemberListMap = new Map, t.getInnerEmitterInstance().on(im.PROFILE_UPDATED, t
						._onProfileUpdated, h(t)), t
			}
			return a(r, [{
				key: "_onProfileUpdated",
				value: function(e) {
					for (var t = this, n = e.data, o = function(e) {
							var o = n[e];
							t.groupMemberListMap.forEach((function(e) {
								e.has(o.userID) && e.get(o.userID)
							.updateMember({
									nick: o.nick,
									avatar: o.avatar
								})
							}))
						}, r = 0; r < n.length; r++) o(r)
				}
			}, {
				key: "deleteGroupMemberList",
				value: function(e) {
					this.groupMemberListMap.delete(e)
				}
			}, {
				key: "getGroupMemberList",
				value: function(e) {
					var t = this,
						n = e.groupID,
						o = e.offset,
						r = void 0 === o ? 0 : o,
						a = e.count,
						s = void 0 === a ? 15 : a,
						i = "".concat(this._className, ".getGroupMemberList"),
						c = new Lp(Cg);
					Gi.log("".concat(i, " groupID:").concat(n, " offset:").concat(r, " count:")
						.concat(s));
					var u = [];
					return this.request({
						protocolName: $l,
						requestData: {
							groupID: n,
							offset: r,
							limit: s > 100 ? 100 : s
						}
					}).then((function(e) {
						var o = e.data,
							r = o.members,
							a = o.memberNum;
						if (!Bi(r) || 0 === r.length) return Promise.resolve([]);
						var s = t.getModule(qu);
						return s.hasLocalGroup(n) && (s.getLocalGroupProfile(n)
							.memberNum = a), u = t._updateLocalGroupMemberMap(n,
							r), t.getModule(Uu).getUserProfile({
							userIDList: r.map((function(e) {
								return e.userID
							})),
							tagList: [r_.NICK, r_.AVATAR]
						})
					})).then((function(e) {
						var o = e.data;
						if (!Bi(o) || 0 === o.length) return q_({
							memberList: []
						});
						var a = o.map((function(e) {
							return {
								userID: e.userID,
								nick: e.nick,
								avatar: e.avatar
							}
						}));
						return t._updateLocalGroupMemberMap(n, a), c.setNetworkType(
								t.getNetworkType()).setMessage("groupID:".concat(n,
								" offset:").concat(r, " count:").concat(s)).end(),
							Gi.log("".concat(i, " ok.")), O_({
								memberList: u
							})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							c.setError(e, o, r).end()
						})), Gi.error("".concat(i, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "getGroupMemberProfile",
				value: function(e) {
					var n = this,
						o = "".concat(this._className, ".getGroupMemberProfile"),
						r = new Lp(Ng);
					r.setMessage(e.userIDList.length > 5 ? "userIDList.length:".concat(e
						.userIDList.length) : "userIDList:".concat(e.userIDList)), Gi.log(""
						.concat(o, " groupID:").concat(e.groupID, " userIDList:").concat(e
							.userIDList.join(","))), e.userIDList.length > 50 && (e
						.userIDList = e.userIDList.slice(0, 50));
					var a = e.groupID,
						s = e.userIDList;
					return this._getGroupMemberProfileAdvance(t(t({}, e), {}, {
						userIDList: s
					})).then((function(e) {
						var t = e.data.members;
						return Bi(t) && 0 !== t.length ? (n
							._updateLocalGroupMemberMap(a, t), n.getModule(Uu)
							.getUserProfile({
								userIDList: t.map((function(e) {
									return e.userID
								})),
								tagList: [r_.NICK, r_.AVATAR]
							})) : q_([])
					})).then((function(e) {
						var t = e.data.map((function(e) {
							return {
								userID: e.userID,
								nick: e.nick,
								avatar: e.avatar
							}
						}));
						n._updateLocalGroupMemberMap(a, t);
						var o = s.filter((function(e) {
							return n.hasLocalGroupMember(a, e)
						})).map((function(e) {
							return n.getLocalGroupMemberInfo(a, e)
						}));
						return r.setNetworkType(n.getNetworkType()).end(), O_({
							memberList: o
						})
					}))
				}
			}, {
				key: "addGroupMember",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".addGroupMember"),
						o = e.groupID,
						r = this.getModule(qu).getLocalGroupProfile(o),
						a = r.type,
						s = new Lp(Ag);
					if (s.setMessage("groupID:".concat(o, " groupType:").concat(a)), dc(a)) {
						var i = new G_({
							code: cd.CANNOT_ADD_MEMBER_IN_AVCHATROOM,
							message: Xd
						});
						return s.setCode(cd.CANNOT_ADD_MEMBER_IN_AVCHATROOM).setError(Xd)
							.setNetworkType(this.getNetworkType()).end(), x_(i)
					}
					return e.userIDList = e.userIDList.map((function(e) {
						return {
							userID: e
						}
					})), Gi.log("".concat(n, " groupID:").concat(o)), this.request({
						protocolName: zl,
						requestData: e
					}).then((function(o) {
						var a = o.data.members;
						Gi.log("".concat(n, " ok"));
						var i = a.filter((function(e) {
								return 1 === e.result
							})).map((function(e) {
								return e.userID
							})),
							c = a.filter((function(e) {
								return 0 === e.result
							})).map((function(e) {
								return e.userID
							})),
							u = a.filter((function(e) {
								return 2 === e.result
							})).map((function(e) {
								return e.userID
							})),
							l = a.filter((function(e) {
								return 4 === e.result
							})).map((function(e) {
								return e.userID
							})),
							d = "groupID:".concat(e.groupID, ", ") +
							"successUserIDList:".concat(i, ", ") +
							"failureUserIDList:".concat(c, ", ") +
							"existedUserIDList:".concat(u, ", ") +
							"overLimitUserIDList:".concat(l);
						return s.setNetworkType(t.getNetworkType()).setMoreMessage(
							d).end(), 0 === i.length ? O_({
							successUserIDList: i,
							failureUserIDList: c,
							existedUserIDList: u,
							overLimitUserIDList: l
						}) : (r.memberNum += i.length, O_({
							successUserIDList: i,
							failureUserIDList: c,
							existedUserIDList: u,
							overLimitUserIDList: l,
							group: r
						}))
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							s.setError(e, o, r).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "deleteGroupMember",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".deleteGroupMember"),
						o = e.groupID,
						r = e.userIDList,
						a = new Lp(Og),
						s = "groupID:".concat(o, " ").concat(r.length > 5 ? "userIDList.length:"
							.concat(r.length) : "userIDList:".concat(r));
					a.setMessage(s), Gi.log("".concat(n, " groupID:").concat(o, " userIDList:"),
						r);
					var i = this.getModule(qu).getLocalGroupProfile(o);
					return dc(i.type) ? x_(new G_({
						code: cd.CANNOT_KICK_MEMBER_IN_AVCHATROOM,
						message: Zd
					})) : this.request({
						protocolName: Wl,
						requestData: e
					}).then((function() {
						return a.setNetworkType(t.getNetworkType()).end(), Gi.log(""
								.concat(n, " ok")), i.memberNum--, t
							.deleteLocalGroupMembers(o, r), O_({
								group: i,
								userIDList: r
							})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							a.setError(e, o, r).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "setGroupMemberMuteTime",
				value: function(e) {
					var t = this,
						n = e.groupID,
						o = e.userID,
						r = e.muteTime,
						a = "".concat(this._className, ".setGroupMemberMuteTime");
					if (o === this.getMyUserID()) return x_(new G_({
						code: cd.CANNOT_MUTE_SELF,
						message: rp
					}));
					Gi.log("".concat(a, " groupID:").concat(n, " userID:").concat(o));
					var s = new Lp(Lg);
					return s.setMessage("groupID:".concat(n, " userID:").concat(o, " muteTime:")
						.concat(r)), this._modifyGroupMemberInfo({
						groupID: n,
						userID: o,
						muteTime: r
					}).then((function(e) {
						s.setNetworkType(t.getNetworkType()).end(), Gi.log(""
							.concat(a, " ok"));
						var o = t.getModule(qu);
						return O_({
							group: o.getLocalGroupProfile(n),
							member: e
						})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							s.setError(e, o, r).end()
						})), Gi.error("".concat(a, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "setGroupMemberRole",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".setGroupMemberRole"),
						o = e.groupID,
						r = e.userID,
						a = e.role,
						s = this.getModule(qu).getLocalGroupProfile(o);
					if (s.selfInfo.role !== Zn.GRP_MBR_ROLE_OWNER) return x_(new G_({
						code: cd.NOT_OWNER,
						message: ep
					}));
					if ([Zn.GRP_WORK, Zn.GRP_AVCHATROOM].includes(s.type)) return x_(new G_({
						code: cd.CANNOT_SET_MEMBER_ROLE_IN_WORK_AND_AVCHATROOM,
						message: tp
					}));
					if ([Zn.GRP_MBR_ROLE_ADMIN, Zn.GRP_MBR_ROLE_MEMBER].indexOf(a) < 0)
					return x_(new G_({
							code: cd.INVALID_MEMBER_ROLE,
							message: np
						}));
					if (r === this.getMyUserID()) return x_(new G_({
						code: cd.CANNOT_SET_SELF_MEMBER_ROLE,
						message: op
					}));
					var i = new Lp(wg);
					return i.setMessage("groupID:".concat(o, " userID:").concat(r, " role:")
						.concat(a)), Gi.log("".concat(n, " groupID:").concat(o, " userID:")
						.concat(r)), this._modifyGroupMemberInfo({
						groupID: o,
						userID: r,
						role: a
					}).then((function(e) {
						return i.setNetworkType(t.getNetworkType()).end(), Gi.log(""
							.concat(n, " ok")), O_({
							group: s,
							member: e
						})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							i.setError(e, o, r).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "setGroupMemberNameCard",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".setGroupMemberNameCard"),
						o = e.groupID,
						r = e.userID,
						a = void 0 === r ? this.getMyUserID() : r,
						s = e.nameCard;
					Gi.log("".concat(n, " groupID:").concat(o, " userID:").concat(a));
					var i = new Lp(Rg);
					return i.setMessage("groupID:".concat(o, " userID:").concat(a, " nameCard:")
						.concat(s)), this._modifyGroupMemberInfo({
						groupID: o,
						userID: a,
						nameCard: s
					}).then((function(e) {
						Gi.log("".concat(n, " ok")), i.setNetworkType(t
							.getNetworkType()).end();
						var r = t.getModule(qu).getLocalGroupProfile(o);
						return a === t.getMyUserID() && r && r.setSelfNameCard(s),
							O_({
								group: r,
								member: e
							})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							i.setError(e, o, r).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "setGroupMemberCustomField",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".setGroupMemberCustomField"),
						o = e.groupID,
						r = e.userID,
						a = void 0 === r ? this.getMyUserID() : r,
						s = e.memberCustomField;
					Gi.log("".concat(n, " groupID:").concat(o, " userID:").concat(a));
					var i = new Lp(bg);
					return i.setMessage("groupID:".concat(o, " userID:").concat(a,
							" memberCustomField:").concat(JSON.stringify(s))), this
						._modifyGroupMemberInfo({
							groupID: o,
							userID: a,
							memberCustomField: s
						}).then((function(e) {
							i.setNetworkType(t.getNetworkType()).end(), Gi.log(""
								.concat(n, " ok"));
							var r = t.getModule(qu).getLocalGroupProfile(o);
							return O_({
								group: r,
								member: e
							})
						})).catch((function(e) {
							return t.probeNetwork().then((function(t) {
								var n = m(t, 2),
									o = n[0],
									r = n[1];
								i.setError(e, o, r).end()
							})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
						}))
				}
			}, {
				key: "setMessageRemindType",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".setMessageRemindType"),
						o = new Lp(_g);
					o.setMessage("groupID:".concat(e.groupID)), Gi.log("".concat(n, " groupID:")
						.concat(e.groupID));
					var r = e.groupID,
						a = e.messageRemindType;
					return this._modifyGroupMemberInfo({
						groupID: r,
						messageRemindType: a,
						userID: this.getMyUserID()
					}).then((function() {
						o.setNetworkType(t.getNetworkType()).end(), Gi.log(""
							.concat(n, " ok. groupID:").concat(e.groupID));
						var r = t.getModule(qu).getLocalGroupProfile(e.groupID);
						return r && (r.selfInfo.messageRemindType = a), O_({
							group: r
						})
					})).catch((function(e) {
						return t.probeNetwork().then((function(t) {
							var n = m(t, 2),
								r = n[0],
								a = n[1];
							o.setError(e, r, a).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "_modifyGroupMemberInfo",
				value: function(e) {
					var t = this,
						n = e.groupID,
						o = e.userID;
					return this.request({
						protocolName: Jl,
						requestData: e
					}).then((function() {
						if (t.hasLocalGroupMember(n, o)) {
							var r = t.getLocalGroupMemberInfo(n, o);
							return ji(e.muteTime) || r.updateMuteUntil(e.muteTime),
								ji(e.role) || r.updateRole(e.role), ji(e
								.nameCard) || r.updateNameCard(e.nameCard), ji(e
									.memberCustomField) || r
								.updateMemberCustomField(e.memberCustomField), r
						}
						return t.getGroupMemberProfile({
							groupID: n,
							userIDList: [o]
						}).then((function(e) {
							return m(e.data.memberList, 1)[0]
						}))
					}))
				}
			}, {
				key: "_getGroupMemberProfileAdvance",
				value: function(e) {
					return this.request({
						protocolName: Yl,
						requestData: t(t({}, e), {}, {
							memberInfoFilter: e.memberInfoFilter ? e
								.memberInfoFilter : ["Role", "JoinTime",
									"NameCard", "ShutUpUntil"
								]
						})
					})
				}
			}, {
				key: "_updateLocalGroupMemberMap",
				value: function(e, t) {
					var n = this;
					return Bi(t) && 0 !== t.length ? t.map((function(t) {
						return n.hasLocalGroupMember(e, t.userID) ? n
							.getLocalGroupMemberInfo(e, t.userID).updateMember(t) :
							n.setLocalGroupMember(e, new Gm(t)), n
							.getLocalGroupMemberInfo(e, t.userID)
					})) : []
				}
			}, {
				key: "deleteLocalGroupMembers",
				value: function(e, t) {
					var n = this.groupMemberListMap.get(e);
					n && t.forEach((function(e) {
						n.delete(e)
					}))
				}
			}, {
				key: "getLocalGroupMemberInfo",
				value: function(e, t) {
					return this.groupMemberListMap.has(e) ? this.groupMemberListMap.get(e).get(
						t) : null
				}
			}, {
				key: "setLocalGroupMember",
				value: function(e, t) {
					if (this.groupMemberListMap.has(e)) this.groupMemberListMap.get(e).set(t
						.userID, t);
					else {
						var n = (new Map).set(t.userID, t);
						this.groupMemberListMap.set(e, n)
					}
				}
			}, {
				key: "getLocalGroupMemberList",
				value: function(e) {
					return this.groupMemberListMap.get(e)
				}
			}, {
				key: "hasLocalGroupMember",
				value: function(e, t) {
					return this.groupMemberListMap.has(e) && this.groupMemberListMap.get(e).has(
						t)
				}
			}, {
				key: "hasLocalGroupMemberMap",
				value: function(e) {
					return this.groupMemberListMap.has(e)
				}
			}, {
				key: "reset",
				value: function() {
					this.groupMemberListMap.clear()
				}
			}]), r
		}(ol),
		Fm = function() {
			function e(t) {
				o(this, e), this._userModule = t, this._className = "ProfileHandler", this.TAG = "profile", this
					.accountProfileMap = new Map, this.expirationTime = 864e5
			}
			return a(e, [{
				key: "setExpirationTime",
				value: function(e) {
					this.expirationTime = e
				}
			}, {
				key: "getUserProfile",
				value: function(e) {
					var t = this,
						n = e.userIDList;
					e.fromAccount = this._userModule.getMyAccount(), n.length > 100 && (Gi.warn(
							"".concat(this._className, ".getUserProfile 获取用户资料人数不能超过100人")),
						n.length = 100);
					for (var o, r = [], a = [], s = 0, i = n.length; s < i; s++) o = n[s], this
						._userModule.isMyFriend(o) && this._containsAccount(o) ? a.push(this
							._getProfileFromMap(o)) : r.push(o);
					if (0 === r.length) return q_(a);
					e.toAccount = r;
					var c = e.bFromGetMyProfile || !1,
						u = [];
					e.toAccount.forEach((function(e) {
						u.push({
							toAccount: e,
							standardSequence: 0,
							customSequence: 0
						})
					})), e.userItem = u;
					var l = new Lp(qg);
					return l.setMessage(n.length > 5 ? "userIDList.length:".concat(n.length) :
						"userIDList:".concat(n)), this._userModule.request({
						protocolName: dl,
						requestData: e
					}).then((function(e) {
						l.setNetworkType(t._userModule.getNetworkType()).end(), Gi
							.info("".concat(t._className, ".getUserProfile ok"));
						var n = t._handleResponse(e).concat(a);
						return O_(c ? n[0] : n)
					})).catch((function(e) {
						return t._userModule.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0],
								r = n[1];
							l.setError(e, o, r).end()
						})), Gi.error("".concat(t._className,
							".getUserProfile failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "getMyProfile",
				value: function() {
					var e = this._userModule.getMyAccount();
					if (Gi.log("".concat(this._className, ".getMyProfile myAccount:").concat(
						e)), this._fillMap(), this._containsAccount(e)) {
						var t = this._getProfileFromMap(e);
						return Gi.debug("".concat(this._className,
								".getMyProfile from cache, myProfile:") + JSON.stringify(t)),
							q_(t)
					}
					return this.getUserProfile({
						fromAccount: e,
						userIDList: [e],
						bFromGetMyProfile: !0
					})
				}
			}, {
				key: "_handleResponse",
				value: function(e) {
					for (var t, n, o = Xi.now(), r = e.data.userProfileItem, a = [], s = 0, i =
							r.length; s < i; s++) "@TLS#NOT_FOUND" !== r[s].to && "" !== r[s]
						.to && (t = r[s].to, n = this._updateMap(t, this
							._getLatestProfileFromResponse(t, r[s].profileItem)), a.push(n));
					return Gi.log("".concat(this._className, "._handleResponse cost ").concat(Xi
						.now() - o, " ms")), a
				}
			}, {
				key: "_getLatestProfileFromResponse",
				value: function(e, t) {
					var n = {};
					if (n.userID = e, n.profileCustomField = [], !Tc(t))
						for (var o = 0, r = t.length; o < r; o++)
							if (t[o].tag.indexOf("Tag_Profile_Custom") > -1) n
								.profileCustomField.push({
									key: t[o].tag,
									value: t[o].value
								});
							else switch (t[o].tag) {
								case r_.NICK:
									n.nick = t[o].value;
									break;
								case r_.GENDER:
									n.gender = t[o].value;
									break;
								case r_.BIRTHDAY:
									n.birthday = t[o].value;
									break;
								case r_.LOCATION:
									n.location = t[o].value;
									break;
								case r_.SELFSIGNATURE:
									n.selfSignature = t[o].value;
									break;
								case r_.ALLOWTYPE:
									n.allowType = t[o].value;
									break;
								case r_.LANGUAGE:
									n.language = t[o].value;
									break;
								case r_.AVATAR:
									n.avatar = t[o].value;
									break;
								case r_.MESSAGESETTINGS:
									n.messageSettings = t[o].value;
									break;
								case r_.ADMINFORBIDTYPE:
									n.adminForbidType = t[o].value;
									break;
								case r_.LEVEL:
									n.level = t[o].value;
									break;
								case r_.ROLE:
									n.role = t[o].value;
									break;
								default:
									Gi.warn("".concat(this._className,
											"._handleResponse unknown tag:"), t[o].tag,
										t[o].value)
							}
					return n
				}
			}, {
				key: "updateMyProfile",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".updateMyProfile"),
						o = new Lp(xg);
					o.setMessage(JSON.stringify(e));
					var r = (new fm).validate(e);
					if (!r.valid) return o.setCode(cd.UPDATE_PROFILE_INVALID_PARAM)
						.setMoreMessage("".concat(n, " info:").concat(r.tips))
						.setNetworkType(this._userModule.getNetworkType()).end(), Gi.error(
							"".concat(n, " info:").concat(r.tips,
								"，请参考 https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#updateMyProfile"
								)), x_({
							code: cd.UPDATE_PROFILE_INVALID_PARAM,
							message: ap
						});
					var a = [];
					for (var s in e) Object.prototype.hasOwnProperty.call(e, s) && (
						"profileCustomField" === s ? e.profileCustomField.forEach((function(
							e) {
							a.push({
								tag: e.key,
								value: e.value
							})
						})) : a.push({
							tag: r_[s.toUpperCase()],
							value: e[s]
						}));
					return 0 === a.length ? (o.setCode(cd.UPDATE_PROFILE_NO_KEY).setMoreMessage(
							sp).setNetworkType(this._userModule.getNetworkType()).end(), Gi
						.error("".concat(n, " info:").concat(sp,
							"，请参考 https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#updateMyProfile"
							)), x_({
							code: cd.UPDATE_PROFILE_NO_KEY,
							message: sp
						})) : this._userModule.request({
						protocolName: pl,
						requestData: {
							fromAccount: this._userModule.getMyAccount(),
							profileItem: a
						}
					}).then((function(r) {
						o.setNetworkType(t._userModule.getNetworkType()).end(), Gi
							.info("".concat(n, " ok"));
						var a = t._updateMap(t._userModule.getMyAccount(), e);
						return t._userModule.emitOuterEvent(Qn.PROFILE_UPDATED, [
							a]), q_(a)
					})).catch((function(e) {
						return t._userModule.probeNetwork().then((function(t) {
							var n = m(t, 2),
								r = n[0],
								a = n[1];
							o.setError(e, r, a).end()
						})), Gi.error("".concat(n, " failed. error:"), e), x_(e)
					}))
				}
			}, {
				key: "onProfileModified",
				value: function(e) {
					var t = e.dataList;
					if (!Tc(t)) {
						var n, o, r = t.length;
						Gi.info("".concat(this._className, ".onProfileModified count:").concat(
							r));
						for (var a = [], s = this._userModule.getModule(Ku), i = 0; i < r; i++)
							n = t[i].userID, o = this._updateMap(n, this
								._getLatestProfileFromResponse(n, t[i].profileList)), a.push(o),
							n === this._userModule.getMyAccount() && s.onMyProfileModified({
								latestNick: o.nick,
								latestAvatar: o.avatar
							});
						this._userModule.emitInnerEvent(im.PROFILE_UPDATED, a), this._userModule
							.emitOuterEvent(Qn.PROFILE_UPDATED, a)
					}
				}
			}, {
				key: "_fillMap",
				value: function() {
					if (0 === this.accountProfileMap.size) {
						for (var e = this._getCachedProfiles(), t = Date.now(), n = 0, o = e
								.length; n < o; n++) t - e[n].lastUpdatedTime < this
							.expirationTime && this.accountProfileMap.set(e[n].userID, e[n]);
						Gi.log("".concat(this._className, "._fillMap from cache, map.size:")
							.concat(this.accountProfileMap.size))
					}
				}
			}, {
				key: "_updateMap",
				value: function(e, t) {
					var n, o = Date.now();
					return this._containsAccount(e) ? (n = this._getProfileFromMap(e), t
							.profileCustomField && uc(n.profileCustomField, t
								.profileCustomField), Qi(n, t, ["profileCustomField"]), n
							.lastUpdatedTime = o) : (n = new fm(t), (this._userModule
							.isMyFriend(e) || e === this._userModule.getMyAccount()) && (n
							.lastUpdatedTime = o, this.accountProfileMap.set(e, n))), this
						._flushMap(e === this._userModule.getMyAccount()), n
				}
			}, {
				key: "_flushMap",
				value: function(e) {
					var t = v(this.accountProfileMap.values()),
						n = this._userModule.getStorageModule();
					Gi.debug("".concat(this._className, "._flushMap length:").concat(t.length,
						" flushAtOnce:").concat(e)), n.setItem(this.TAG, t, e)
				}
			}, {
				key: "_containsAccount",
				value: function(e) {
					return this.accountProfileMap.has(e)
				}
			}, {
				key: "_getProfileFromMap",
				value: function(e) {
					return this.accountProfileMap.get(e)
				}
			}, {
				key: "_getCachedProfiles",
				value: function() {
					var e = this._userModule.getStorageModule().getItem(this.TAG);
					return Tc(e) ? [] : e
				}
			}, {
				key: "onConversationsProfileUpdated",
				value: function(e) {
					for (var t, n, o, r = [], a = 0, s = e.length; a < s; a++) n = (t = e[a])
						.userID, this._userModule.isMyFriend(n) || (this._containsAccount(n) ? (
								o = this._getProfileFromMap(n), Qi(o, t) > 0 && r.push(n)) : r
							.push(t.userID));
					0 !== r.length && (Gi.info("".concat(this._className,
							".onConversationsProfileUpdated toAccountList:").concat(r)),
						this.getUserProfile({
							userIDList: r
						}))
				}
			}, {
				key: "getNickAndAvatarByUserID",
				value: function(e) {
					if (this._containsAccount(e)) {
						var t = this._getProfileFromMap(e);
						return {
							nick: t.nick,
							avatar: t.avatar
						}
					}
					return {
						nick: "",
						avatar: ""
					}
				}
			}, {
				key: "reset",
				value: function() {
					this._flushMap(!0), this.accountProfileMap.clear()
				}
			}]), e
		}(),
		qm = function e(t) {
			o(this, e), Tc || (this.userID = t.userID || "", this.timeStamp = t.timeStamp || 0)
		},
		xm = function() {
			function e(t) {
				o(this, e), this._userModule = t, this._className = "BlacklistHandler", this._blacklistMap =
					new Map, this.startIndex = 0, this.maxLimited = 100, this.currentSequence = 0
			}
			return a(e, [{
				key: "getLocalBlacklist",
				value: function() {
					return v(this._blacklistMap.keys())
				}
			}, {
				key: "getBlacklist",
				value: function() {
					var e = this,
						t = "".concat(this._className, ".getBlacklist"),
						n = {
							fromAccount: this._userModule.getMyAccount(),
							maxLimited: this.maxLimited,
							startIndex: 0,
							lastSequence: this.currentSequence
						},
						o = new Lp(Vg);
					return this._userModule.request({
						protocolName: gl,
						requestData: n
					}).then((function(n) {
						var r = n.data,
							a = r.blackListItem,
							s = r.currentSequence,
							i = Tc(a) ? 0 : a.length;
						o.setNetworkType(e._userModule.getNetworkType()).setMessage(
								"blackList count:".concat(i)).end(), Gi.info(""
								.concat(t, " ok")), e.currentSequence = s, e
							._handleResponse(a, !0), e._userModule.emitOuterEvent(Qn
								.BLACKLIST_UPDATED, v(e._blacklistMap.keys()))
					})).catch((function(n) {
						return e._userModule.probeNetwork().then((function(e) {
							var t = m(e, 2),
								r = t[0],
								a = t[1];
							o.setError(n, r, a).end()
						})), Gi.error("".concat(t, " failed. error:"), n), x_(n)
					}))
				}
			}, {
				key: "addBlacklist",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".addBlacklist"),
						o = new Lp(Kg);
					if (!Bi(e.userIDList)) return o.setCode(cd.ADD_BLACKLIST_INVALID_PARAM)
						.setMessage(ip).setNetworkType(this._userModule.getNetworkType())
						.end(), Gi.error("".concat(n, " options.userIDList 必需是数组")), x_({
							code: cd.ADD_BLACKLIST_INVALID_PARAM,
							message: ip
						});
					var r = this._userModule.getMyAccount();
					return 1 === e.userIDList.length && e.userIDList[0] === r ? (o.setCode(cd
						.CANNOT_ADD_SELF_TO_BLACKLIST).setMessage(up).setNetworkType(
						this._userModule.getNetworkType()).end(), Gi.error("".concat(n,
						" 不能把自己拉黑")), x_({
						code: cd.CANNOT_ADD_SELF_TO_BLACKLIST,
						message: up
					})) : (e.userIDList.includes(r) && (e.userIDList = e.userIDList.filter((
							function(e) {
								return e !== r
							})), Gi.warn("".concat(n, " 不能把自己拉黑，已过滤"))), e.fromAccount =
						this._userModule.getMyAccount(), e.toAccount = e.userIDList, this
						._userModule.request({
							protocolName: hl,
							requestData: e
						}).then((function(r) {
							return o.setNetworkType(t._userModule.getNetworkType())
								.setMessage(e.userIDList.length > 5 ?
									"userIDList.length:".concat(e.userIDList
									.length) : "userIDList:".concat(e.userIDList))
								.end(), Gi.info("".concat(n, " ok")), t
								._handleResponse(r.resultItem, !0), O_(v(t
									._blacklistMap.keys()))
						})).catch((function(e) {
							return t._userModule.probeNetwork().then((function(t) {
									var n = m(t, 2),
										r = n[0],
										a = n[1];
									o.setError(e, r, a).end()
								})), Gi.error("".concat(n, " failed. error:"), e),
								x_(e)
						})))
				}
			}, {
				key: "_handleResponse",
				value: function(e, t) {
					if (!Tc(e))
						for (var n, o, r, a = 0, s = e.length; a < s; a++) o = e[a].to, r = e[a]
							.resultCode, (ji(r) || 0 === r) && (t ? ((n = this._blacklistMap
										.has(o) ? this._blacklistMap.get(o) : new qm).userID =
									o, !Tc(e[a].addBlackTimeStamp) && (n.timeStamp = e[a]
										.addBlackTimeStamp), this._blacklistMap.set(o, n)) :
								this._blacklistMap.has(o) && (n = this._blacklistMap.get(o),
									this._blacklistMap.delete(o)));
					Gi.log("".concat(this._className, "._handleResponse total:").concat(this
						._blacklistMap.size, " bAdd:").concat(t))
				}
			}, {
				key: "deleteBlacklist",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".deleteBlacklist"),
						o = new Lp(Bg);
					return Bi(e.userIDList) ? (e.fromAccount = this._userModule.getMyAccount(),
						e.toAccount = e.userIDList, this._userModule.request({
							protocolName: fl,
							requestData: e
						}).then((function(r) {
							return o.setNetworkType(t._userModule.getNetworkType())
								.setMessage(e.userIDList.length > 5 ?
									"userIDList.length:".concat(e.userIDList
									.length) : "userIDList:".concat(e.userIDList))
								.end(), Gi.info("".concat(n, " ok")), t
								._handleResponse(r.data.resultItem, !1), O_(v(t
									._blacklistMap.keys()))
						})).catch((function(e) {
							return t._userModule.probeNetwork().then((function(t) {
									var n = m(t, 2),
										r = n[0],
										a = n[1];
									o.setError(e, r, a).end()
								})), Gi.error("".concat(n, " failed. error:"), e),
								x_(e)
						}))) : (o.setCode(cd.DEL_BLACKLIST_INVALID_PARAM).setMessage(cp)
						.setNetworkType(this._userModule.getNetworkType()).end(), Gi.error(
							"".concat(n, " options.userIDList 必需是数组")), x_({
							code: cd.DEL_BLACKLIST_INVALID_PARAM,
							message: cp
						}))
				}
			}, {
				key: "onAccountDeleted",
				value: function(e) {
					for (var t, n = [], o = 0, r = e.length; o < r; o++) t = e[o], this
						._blacklistMap.has(t) && (this._blacklistMap.delete(t), n.push(t));
					n.length > 0 && (Gi.log("".concat(this._className,
							".onAccountDeleted count:").concat(n.length,
						" userIDList:"), n), this._userModule.emitOuterEvent(Qn
						.BLACKLIST_UPDATED, v(this._blacklistMap.keys())))
				}
			}, {
				key: "onAccountAdded",
				value: function(e) {
					for (var t, n = [], o = 0, r = e.length; o < r; o++) t = e[o], this
						._blacklistMap.has(t) || (this._blacklistMap.set(t, new qm({
							userID: t
						})), n.push(t));
					n.length > 0 && (Gi.log("".concat(this._className, ".onAccountAdded count:")
							.concat(n.length, " userIDList:"), n), this._userModule
						.emitOuterEvent(Qn.BLACKLIST_UPDATED, v(this._blacklistMap.keys())))
				}
			}, {
				key: "reset",
				value: function() {
					this._blacklistMap.clear(), this.startIndex = 0, this.maxLimited = 100, this
						.currentSequence = 0
				}
			}]), e
		}(),
		Vm = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "UserModule", r._profileHandler = new Fm(
					h(r)), r._blacklistHandler = new xm(h(r)), r.getInnerEmitterInstance().on(im
					.CONTEXT_A2KEY_AND_TINYID_UPDATED, r.onContextUpdated, h(r)), r
			}
			return a(n, [{
				key: "onContextUpdated",
				value: function(e) {
					this._profileHandler.getMyProfile(), this._blacklistHandler.getBlacklist()
				}
			}, {
				key: "onProfileModified",
				value: function(e) {
					this._profileHandler.onProfileModified(e)
				}
			}, {
				key: "onRelationChainModified",
				value: function(e) {
					var t = e.dataList;
					if (!Tc(t)) {
						var n = [];
						t.forEach((function(e) {
							e.blackListDelAccount && n.push.apply(n, v(e
								.blackListDelAccount))
						})), n.length > 0 && this._blacklistHandler.onAccountDeleted(n);
						var o = [];
						t.forEach((function(e) {
							e.blackListAddAccount && o.push.apply(o, v(e
								.blackListAddAccount))
						})), o.length > 0 && this._blacklistHandler.onAccountAdded(o)
					}
				}
			}, {
				key: "onConversationsProfileUpdated",
				value: function(e) {
					this._profileHandler.onConversationsProfileUpdated(e)
				}
			}, {
				key: "getMyAccount",
				value: function() {
					return this.getMyUserID()
				}
			}, {
				key: "getMyProfile",
				value: function() {
					return this._profileHandler.getMyProfile()
				}
			}, {
				key: "getStorageModule",
				value: function() {
					return this.getModule(ju)
				}
			}, {
				key: "isMyFriend",
				value: function(e) {
					var t = this.getModule(xu);
					return !!t && t.isMyFriend(e)
				}
			}, {
				key: "getUserProfile",
				value: function(e) {
					return this._profileHandler.getUserProfile(e)
				}
			}, {
				key: "updateMyProfile",
				value: function(e) {
					return this._profileHandler.updateMyProfile(e)
				}
			}, {
				key: "getNickAndAvatarByUserID",
				value: function(e) {
					return this._profileHandler.getNickAndAvatarByUserID(e)
				}
			}, {
				key: "getLocalBlacklist",
				value: function() {
					var e = this._blacklistHandler.getLocalBlacklist();
					return q_(e)
				}
			}, {
				key: "addBlacklist",
				value: function(e) {
					return this._blacklistHandler.addBlacklist(e)
				}
			}, {
				key: "deleteBlacklist",
				value: function(e) {
					return this._blacklistHandler.deleteBlacklist(e)
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._profileHandler.reset(),
						this._blacklistHandler.reset()
				}
			}]), n
		}(ol),
		Km = function() {
			function e(t, n) {
				o(this, e), this._moduleManager = t, this._isLoggedIn = !1, this._SDKAppID = n.SDKAppID, this
					._userID = n.userID || "", this._userSig = n.userSig || "", this._version = "2.13.1", this
					._a2Key = "", this._tinyID = "", this._contentType = "json", this._unlimitedAVChatRoom = n
					.unlimitedAVChatRoom, this._scene = n.scene || "", this._oversea = n.oversea, this
					._instanceID = n.instanceID, this._statusInstanceID = 0
			}
			return a(e, [{
				key: "isLoggedIn",
				value: function() {
					return this._isLoggedIn
				}
			}, {
				key: "isOversea",
				value: function() {
					return this._oversea
				}
			}, {
				key: "isUnlimitedAVChatRoom",
				value: function() {
					return this._unlimitedAVChatRoom
				}
			}, {
				key: "getUserID",
				value: function() {
					return this._userID
				}
			}, {
				key: "setUserID",
				value: function(e) {
					this._userID = e
				}
			}, {
				key: "setUserSig",
				value: function(e) {
					this._userSig = e
				}
			}, {
				key: "getUserSig",
				value: function() {
					return this._userSig
				}
			}, {
				key: "getSDKAppID",
				value: function() {
					return this._SDKAppID
				}
			}, {
				key: "getTinyID",
				value: function() {
					return this._tinyID
				}
			}, {
				key: "setTinyID",
				value: function(e) {
					this._tinyID = e, this._isLoggedIn = !0
				}
			}, {
				key: "getScene",
				value: function() {
					return function() {
						var e = !1,
							t = [];
						Zs && (t = Object.keys(ti)), ei && (t = Object.keys(window));
						for (var n = 0, o = t.length; n < o; n++)
							if (t[n].toLowerCase().includes("uikit")) {
								e = !0;
								break
							} return t = null, e
					}() ? "tuikit" : this._scene
				}
			}, {
				key: "getInstanceID",
				value: function() {
					return this._instanceID
				}
			}, {
				key: "getStatusInstanceID",
				value: function() {
					return this._statusInstanceID
				}
			}, {
				key: "setStatusInstanceID",
				value: function(e) {
					this._statusInstanceID = e
				}
			}, {
				key: "getVersion",
				value: function() {
					return this._version
				}
			}, {
				key: "getA2Key",
				value: function() {
					return this._a2Key
				}
			}, {
				key: "setA2Key",
				value: function(e) {
					this._a2Key = e
				}
			}, {
				key: "getContentType",
				value: function() {
					return this._contentType
				}
			}, {
				key: "reset",
				value: function() {
					this._isLoggedIn = !1, this._userSig = "", this._a2Key = "", this._tinyID =
						"", this._statusInstanceID = 0
				}
			}]), e
		}(),
		Bm = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "SignModule", r._helloInterval = 120, r
					._lastLoginTs = 0, cm.mixin(h(r)), r
			}
			return a(n, [{
				key: "onCheckTimer",
				value: function(e) {
					this.isLoggedIn() && e % this._helloInterval == 0 && this._hello()
				}
			}, {
				key: "login",
				value: function(e) {
					if (this.isLoggedIn()) {
						var t = "您已经登录账号".concat(e.userID,
							"！如需切换账号登录，请先调用 logout 接口登出，再调用 login 接口登录。");
						return Gi.warn(t), q_({
							actionStatus: "OK",
							errorCode: 0,
							errorInfo: t,
							repeatLogin: !0
						})
					}
					if (Date.now() - this._lastLoginTs <= 15e3) return Gi.warn("您正在尝试登录账号"
						.concat(e.userID, "！请勿重复登录。")), x_({
						code: cd.REPEAT_LOGIN,
						message: fd
					});
					Gi.log("".concat(this._className, ".login userID:").concat(e.userID));
					var n = this._checkLoginInfo(e);
					if (0 !== n.code) return x_(n);
					var o = this.getModule(Bu),
						r = e.userID,
						a = e.userSig;
					return o.setUserID(r), o.setUserSig(a), this.getModule(Xu)
						.updateProtocolConfig(), this._login()
				}
			}, {
				key: "_login",
				value: function() {
					var e = this,
						t = this.getModule(Bu),
						n = new Lp(bp);
					return n.setMessage("".concat(t.getScene())).setMoreMessage("identifier:"
							.concat(this.getMyUserID())), this._lastLoginTs = Date.now(), this
						.request({
							protocolName: rl
						}).then((function(o) {
							e._lastLoginTs = 0;
							var r = Date.now(),
								a = null,
								s = o.data,
								i = s.a2Key,
								c = s.tinyID,
								u = s.helloInterval,
								l = s.instanceID,
								d = s.timeStamp;
							Gi.log("".concat(e._className, ".login ok. helloInterval:")
								.concat(u, " instanceID:").concat(l, " timeStamp:")
								.concat(d));
							var p = 1e3 * d,
								g = r - n.getStartTs(),
								h = p + parseInt(g / 2) - r,
								f = n.getStartTs() + h;
							if (n.start(f), function(e, t) {
									Oi = t;
									var n = new Date;
									n.setTime(e), Gi.info("baseTime from server: "
										.concat(n, " offset: ").concat(Oi))
								}(p, h), !c) throw a = new G_({
								code: cd.NO_TINYID,
								message: pd
							}), n.setError(a, !0, e.getNetworkType()).end(), a;
							if (!i) throw a = new G_({
								code: cd.NO_A2KEY,
								message: gd
							}), n.setError(a, !0, e.getNetworkType()).end(), a;
							return n.setNetworkType(e.getNetworkType()).setMoreMessage(
									"helloInterval:".concat(u, " instanceID:").concat(l,
										" offset:").concat(h)).end(), t.setA2Key(i), t
								.setTinyID(c), t.setStatusInstanceID(l), e.getModule(Xu)
								.updateProtocolConfig(), e.emitInnerEvent(im
									.CONTEXT_A2KEY_AND_TINYID_UPDATED), e
								._helloInterval = u, e.triggerReady(), e
								._fetchCloudControlConfig(), o
						})).catch((function(t) {
							return e.probeNetwork().then((function(e) {
									var o = m(e, 2),
										r = o[0],
										a = o[1];
									n.setError(t, r, a).end(!0)
								})), Gi.error("".concat(e._className,
									".login failed. error:"), t), e._moduleManager
								.onLoginFailed(), x_(t)
						}))
				}
			}, {
				key: "logout",
				value: function() {
					var e = this;
					return this.isLoggedIn() ? (new Lp(Pp).setNetworkType(this.getNetworkType())
						.setMessage("identifier:".concat(this.getMyUserID())).end(!0), Gi
						.info("".concat(this._className, ".logout")), this.request({
							protocolName: al
						}).then((function() {
							return e.resetReady(), q_({})
						})).catch((function(t) {
							return Gi.error("".concat(e._className,
								"._logout error:"), t), e.resetReady(), q_({})
						}))) : x_({
						code: cd.USER_NOT_LOGGED_IN,
						message: hd
					})
				}
			}, {
				key: "_fetchCloudControlConfig",
				value: function() {
					this.getModule(el).fetchConfig()
				}
			}, {
				key: "_hello",
				value: function() {
					var e = this;
					this.request({
						protocolName: sl
					}).catch((function(t) {
						Gi.warn("".concat(e._className, "._hello error:"), t)
					}))
				}
			}, {
				key: "_checkLoginInfo",
				value: function(e) {
					var t = 0,
						n = "";
					return Tc(this.getModule(Bu).getSDKAppID()) ? (t = cd.NO_SDKAPPID, n = ud) :
						Tc(e.userID) ? (t = cd.NO_IDENTIFIER, n = ld) : Tc(e.userSig) && (t = cd
							.NO_USERSIG, n = dd), {
							code: t,
							message: n
						}
				}
			}, {
				key: "onMultipleAccountKickedOut",
				value: function(e) {
					var t = this;
					new Lp(Gp).setNetworkType(this.getNetworkType()).setMessage("type:".concat(
						Zn.KICKED_OUT_MULT_ACCOUNT, " newInstanceInfo:").concat(JSON
						.stringify(e))).end(!0), Gi.warn("".concat(this._className,
						".onMultipleAccountKickedOut userID:").concat(this
					.getMyUserID(), " newInstanceInfo:"), e), this.logout().then((
				function() {
						t.emitOuterEvent(Qn.KICKED_OUT, {
							type: Zn.KICKED_OUT_MULT_ACCOUNT
						}), t._moduleManager.reset()
					}))
				}
			}, {
				key: "onMultipleDeviceKickedOut",
				value: function(e) {
					var t = this;
					new Lp(Gp).setNetworkType(this.getNetworkType()).setMessage("type:".concat(
						Zn.KICKED_OUT_MULT_DEVICE, " newInstanceInfo:").concat(JSON
						.stringify(e))).end(!0), Gi.warn("".concat(this._className,
						".onMultipleDeviceKickedOut userID:").concat(this.getMyUserID(),
						" newInstanceInfo:"), e), this.logout().then((function() {
						t.emitOuterEvent(Qn.KICKED_OUT, {
							type: Zn.KICKED_OUT_MULT_DEVICE
						}), t._moduleManager.reset()
					}))
				}
			}, {
				key: "onUserSigExpired",
				value: function() {
					new Lp(Gp).setNetworkType(this.getNetworkType()).setMessage(Zn
							.KICKED_OUT_USERSIG_EXPIRED).end(!0), Gi.warn("".concat(this
							._className, ".onUserSigExpired: userSig 签名过期被踢下线")), 0 !== this
						.getModule(Bu).getStatusInstanceID() && (this.emitOuterEvent(Qn
							.KICKED_OUT, {
								type: Zn.KICKED_OUT_USERSIG_EXPIRED
							}), this._moduleManager.reset())
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this.resetReady(), this
						._helloInterval = 120, this._lastLoginTs = 0
				}
			}]), n
		}(ol);

	function jm() {
		return null
	}
	var Hm = function() {
			function e(t) {
				o(this, e), this._moduleManager = t, this._className = "StorageModule", this._storageQueue =
					new Map, this._errorTolerantHandle()
			}
			return a(e, [{
				key: "_errorTolerantHandle",
				value: function() {
					Zs || !ji(window) && !ji(window.localStorage) || (this.getItem = jm, this
						.setItem = jm, this.removeItem = jm, this.clear = jm)
				}
			}, {
				key: "onCheckTimer",
				value: function(e) {
					if (e % 20 == 0) {
						if (0 === this._storageQueue.size) return;
						this._doFlush()
					}
				}
			}, {
				key: "_doFlush",
				value: function() {
					try {
						var e, t = E(this._storageQueue);
						try {
							for (t.s(); !(e = t.n()).done;) {
								var n = m(e.value, 2),
									o = n[0],
									r = n[1];
								this._setStorageSync(this._getKey(o), r)
							}
						} catch (a) {
							t.e(a)
						} finally {
							t.f()
						}
						this._storageQueue.clear()
					} catch (Hv) {
						Gi.warn("".concat(this._className, "._doFlush error:"), Hv)
					}
				}
			}, {
				key: "_getPrefix",
				value: function() {
					var e = this._moduleManager.getModule(Bu);
					return "TIM_".concat(e.getSDKAppID(), "_").concat(e.getUserID(), "_")
				}
			}, {
				key: "_getKey",
				value: function(e) {
					return "".concat(this._getPrefix()).concat(e)
				}
			}, {
				key: "getItem",
				value: function(e) {
					var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
					try {
						var n = t ? this._getKey(e) : e;
						return this._getStorageSync(n)
					} catch (Hv) {
						return Gi.warn("".concat(this._className, ".getItem error:"), Hv), {}
					}
				}
			}, {
				key: "setItem",
				value: function(e, t) {
					var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
						o = !(arguments.length > 3 && void 0 !== arguments[3]) || arguments[3];
					if (n) {
						var r = o ? this._getKey(e) : e;
						this._setStorageSync(r, t)
					} else this._storageQueue.set(e, t)
				}
			}, {
				key: "clear",
				value: function() {
					try {
						Zs ? ti.clearStorageSync() : localStorage && localStorage.clear()
					} catch (Hv) {
						Gi.warn("".concat(this._className, ".clear error:"), Hv)
					}
				}
			}, {
				key: "removeItem",
				value: function(e) {
					var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
					try {
						var n = t ? this._getKey(e) : e;
						this._removeStorageSync(n)
					} catch (Hv) {
						Gi.warn("".concat(this._className, ".removeItem error:"), Hv)
					}
				}
			}, {
				key: "getSize",
				value: function(e) {
					var t = this,
						n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] :
						"b";
					try {
						var o = {
							size: 0,
							limitSize: 5242880,
							unit: n
						};
						if (Object.defineProperty(o, "leftSize", {
								enumerable: !0,
								get: function() {
									return o.limitSize - o.size
								}
							}), Zs && (o.limitSize = 1024 * ti.getStorageInfoSync().limitSize),
							e) o.size = JSON.stringify(this.getItem(e)).length + this._getKey(e)
							.length;
						else if (Zs) {
							var r = ti.getStorageInfoSync(),
								a = r.keys;
							a.forEach((function(e) {
								o.size += JSON.stringify(t._getStorageSync(e))
									.length + t._getKey(e).length
							}))
						} else if (localStorage)
							for (var s in localStorage) localStorage.hasOwnProperty(s) && (o
								.size += localStorage.getItem(s).length + s.length);
						return this._convertUnit(o)
					} catch (Hv) {
						Gi.warn("".concat(this._className, " error:"), Hv)
					}
				}
			}, {
				key: "_convertUnit",
				value: function(e) {
					var t = {},
						n = e.unit;
					for (var o in t.unit = n, e) "number" == typeof e[o] && ("kb" === n
						.toLowerCase() ? t[o] = Math.round(e[o] / 1024) : "mb" === n
						.toLowerCase() ? t[o] = Math.round(e[o] / 1024 / 1024) : t[o] = e[o]
						);
					return t
				}
			}, {
				key: "_setStorageSync",
				value: function(e, t) {
					Zs ? Xs ? my.setStorageSync({
						key: e,
						data: t
					}) : ti.setStorageSync(e, t) : localStorage && localStorage.setItem(e,
						JSON.stringify(t))
				}
			}, {
				key: "_getStorageSync",
				value: function(e) {
					return Zs ? Xs ? my.getStorageSync({
						key: e
					}).data : ti.getStorageSync(e) : localStorage ? JSON.parse(localStorage
						.getItem(e)) : {}
				}
			}, {
				key: "_removeStorageSync",
				value: function(e) {
					Zs ? Xs ? my.removeStorageSync({
						key: e
					}) : ti.removeStorageSync(e) : localStorage && localStorage.removeItem(
						e)
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._doFlush()
				}
			}]), e
		}(),
		$m = function() {
			function e(t) {
				o(this, e), this._className = "SSOLogBody", this._report = []
			}
			return a(e, [{
				key: "pushIn",
				value: function(e) {
					Gi.debug("".concat(this._className, ".pushIn"), this._report.length, e),
						this._report.push(e)
				}
			}, {
				key: "backfill",
				value: function(e) {
					var t;
					Bi(e) && 0 !== e.length && (Gi.debug("".concat(this._className,
							".backfill"), this._report.length, e.length), (t = this._report)
						.unshift.apply(t, v(e)))
				}
			}, {
				key: "getLogsNumInMemory",
				value: function() {
					return this._report.length
				}
			}, {
				key: "isEmpty",
				value: function() {
					return 0 === this._report.length
				}
			}, {
				key: "_reset",
				value: function() {
					this._report.length = 0, this._report = []
				}
			}, {
				key: "getLogsInMemory",
				value: function() {
					var e = this._report.slice();
					return this._reset(), e
				}
			}]), e
		}(),
		Ym = function(e) {
			var t = e.getModule(Bu);
			return {
				SDKType: 10,
				SDKAppID: t.getSDKAppID(),
				SDKVersion: t.getVersion(),
				tinyID: Number(t.getTinyID()),
				userID: t.getUserID(),
				platform: e.getPlatform(),
				instanceID: t.getInstanceID(),
				traceID: Li()
			}
		},
		zm = function(e) {
			i(r, e);
			var n = _(r);

			function r(e) {
				var t;
				o(this, r), (t = n.call(this, e))._className = "EventStatModule", t.TAG = "im-ssolog-event", t
					._reportBody = new $m, t.MIN_THRESHOLD = 20, t.MAX_THRESHOLD = 100, t.WAITING_TIME = 6e4, t
					.REPORT_LEVEL = [4, 5, 6], t.REPORT_SDKAPPID_BLACKLIST = [], t.REPORT_TINYID_WHITELIST = [],
					t._lastReportTime = Date.now();
				var a = t.getInnerEmitterInstance();
				return a.on(im.CONTEXT_A2KEY_AND_TINYID_UPDATED, t._onLoginSuccess, h(t)), a.on(im
					.CLOUD_CONFIG_UPDATED, t._onCloudConfigUpdated, h(t)), t
			}
			return a(r, [{
				key: "reportAtOnce",
				value: function() {
					Gi.debug("".concat(this._className, ".reportAtOnce")), this._report()
				}
			}, {
				key: "_onLoginSuccess",
				value: function() {
					var e = this,
						t = this.getModule(ju),
						n = t.getItem(this.TAG, !1);
					!Tc(n) && $i(n.forEach) && (Gi.log("".concat(this._className,
						"._onLoginSuccess get ssolog in storage, count:").concat(n
						.length)), n.forEach((function(t) {
						e._reportBody.pushIn(t)
					})), t.removeItem(this.TAG, !1))
				}
			}, {
				key: "_onCloudConfigUpdated",
				value: function() {
					var e = this.getCloudConfig("evt_rpt_threshold"),
						t = this.getCloudConfig("evt_rpt_waiting"),
						n = this.getCloudConfig("evt_rpt_level"),
						o = this.getCloudConfig("evt_rpt_sdkappid_bl"),
						r = this.getCloudConfig("evt_rpt_tinyid_wl");
					ji(e) || (this.MIN_THRESHOLD = Number(e)), ji(t) || (this.WAITING_TIME =
						Number(t)), ji(n) || (this.REPORT_LEVEL = n.split(",").map((
						function(e) {
							return Number(e)
						}))), ji(o) || (this.REPORT_SDKAPPID_BLACKLIST = o.split(",").map((
						function(e) {
							return Number(e)
						}))), ji(r) || (this.REPORT_TINYID_WHITELIST = r.split(","))
				}
			}, {
				key: "pushIn",
				value: function(e) {
					e instanceof Lp && (e.updateTimeStamp(), this._reportBody.pushIn(e), this
						._reportBody.getLogsNumInMemory() >= this.MIN_THRESHOLD && this
						._report())
				}
			}, {
				key: "onCheckTimer",
				value: function() {
					Date.now() < this._lastReportTime + this.WAITING_TIME || this._reportBody
						.isEmpty() || this._report()
				}
			}, {
				key: "_filterLogs",
				value: function(e) {
					var t = this,
						n = this.getModule(Bu),
						o = n.getSDKAppID(),
						r = n.getTinyID();
					return yc(this.REPORT_SDKAPPID_BLACKLIST, o) && !Ic(this
						.REPORT_TINYID_WHITELIST, r) ? [] : e.filter((function(e) {
						return t.REPORT_LEVEL.includes(e.level)
					}))
				}
			}, {
				key: "_report",
				value: function() {
					var e = this;
					if (!this._reportBody.isEmpty()) {
						var n = this._reportBody.getLogsInMemory(),
							o = this._filterLogs(n);
						if (0 !== o.length) {
							var r = {
								header: Ym(this),
								event: o
							};
							this.request({
								protocolName: Zl,
								requestData: t({}, r)
							}).then((function() {
								e._lastReportTime = Date.now()
							})).catch((function(t) {
								Gi.warn("".concat(e._className,
										".report failed. networkType:").concat(e
										.getNetworkType(), " error:"), t), e
									._reportBody.backfill(n), e._reportBody
									.getLogsNumInMemory() > e.MAX_THRESHOLD && e
									._flushAtOnce()
							}))
						} else this._lastReportTime = Date.now()
					}
				}
			}, {
				key: "_flushAtOnce",
				value: function() {
					var e = this.getModule(ju),
						t = e.getItem(this.TAG, !1),
						n = this._reportBody.getLogsInMemory();
					if (Tc(t)) Gi.log("".concat(this._className, "._flushAtOnce count:").concat(
						n.length)), e.setItem(this.TAG, n, !0, !1);
					else {
						var o = n.concat(t);
						o.length > this.MAX_THRESHOLD && (o = o.slice(0, this.MAX_THRESHOLD)),
							Gi.log("".concat(this._className, "._flushAtOnce count:").concat(o
								.length)), e.setItem(this.TAG, o, !0, !1)
					}
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._lastReportTime = 0, this
						._report(), this.REPORT_SDKAPPID_BLACKLIST = [], this
						.REPORT_TINYID_WHITELIST = []
				}
			}]), r
		}(ol),
		Wm = "none",
		Jm = "online",
		Xm = function() {
			function e(t) {
				o(this, e), this._moduleManager = t, this._networkType = "", this._className =
					"NetMonitorModule", this.MAX_WAIT_TIME = 3e3
			}
			return a(e, [{
				key: "start",
				value: function() {
					var e = this;
					if (Zs) {
						ti.getNetworkType({
							success: function(t) {
								e._networkType = t.networkType, t.networkType ===
									Wm ? Gi.warn("".concat(e._className,
										".start no network, please check!")) : Gi
									.info("".concat(e._className,
										".start networkType:").concat(t
										.networkType))
							}
						});
						var t = this._onNetworkStatusChange.bind(this);
						ti.offNetworkStatusChange && (Qs || Ws ? ti.offNetworkStatusChange(t) :
							ti.offNetworkStatusChange()), ti.onNetworkStatusChange(t)
					} else this._networkType = Jm
				}
			}, {
				key: "_onNetworkStatusChange",
				value: function(e) {
					e.isConnected ? (Gi.info("".concat(this._className,
								"._onNetworkStatusChange previousNetworkType:").concat(this
								._networkType, " currentNetworkType:").concat(e
							.networkType)), this._networkType !== e.networkType && this
						._moduleManager.getModule(Qu).reConnect()) : Gi.warn("".concat(this
						._className, "._onNetworkStatusChange no network, please check!"
						));
					this._networkType = e.networkType
				}
			}, {
				key: "probe",
				value: function() {
					var e = this;
					return new Promise((function(t, n) {
						if (Zs) ti.getNetworkType({
							success: function(n) {
								e._networkType = n.networkType, n
									.networkType === Wm ? (Gi.warn(""
										.concat(e._className,
											".probe no network, please check!"
											)), t([!1, n
										.networkType])) : (Gi.info(""
										.concat(e._className,
											".probe networkType:")
										.concat(n.networkType)), t([
										!0, n.networkType
									]))
							}
						});
						else if (window && window.fetch) fetch("".concat(sc(),
							"//web.sdk.qcloud.com/im/assets/speed.xml?random="
							).concat(Math.random())).then((function(e) {
							e.ok ? t([!0, Jm]) : t([!1, Wm])
						})).catch((function(e) {
							t([!1, Wm])
						}));
						else {
							var o = new XMLHttpRequest,
								r = setTimeout((function() {
									Gi.warn("".concat(e._className,
											".probe fetch timeout. Probably no network, please check!"
											)), o.abort(), e._networkType =
										Wm, t([!1, Wm])
								}), e.MAX_WAIT_TIME);
							o.onreadystatechange = function() {
								4 === o.readyState && (clearTimeout(r), 200 ===
									o.status || 304 === o.status ? (this
										._networkType = Jm, t([!0, Jm])) : (
										Gi.warn("".concat(this.className,
												".probe fetch status:")
											.concat(o.status,
												". Probably no network, please check!"
												)), this._networkType = Wm,
										t([!1, Wm])))
							}, o.open("GET", "".concat(sc(),
								"//web.sdk.qcloud.com/im/assets/speed.xml?random="
								).concat(Math.random())), o.send()
						}
					}))
				}
			}, {
				key: "getNetworkType",
				value: function() {
					return this._networkType
				}
			}]), e
		}(),
		Qm = k((function(e) {
			var t = Object.prototype.hasOwnProperty,
				n = "~";

			function o() {}

			function r(e, t, n) {
				this.fn = e, this.context = t, this.once = n || !1
			}

			function a(e, t, o, a, s) {
				if ("function" != typeof o) throw new TypeError("The listener must be a function");
				var i = new r(o, a || e, s),
					c = n ? n + t : t;
				return e._events[c] ? e._events[c].fn ? e._events[c] = [e._events[c], i] : e._events[c]
					.push(i) : (e._events[c] = i, e._eventsCount++), e
			}

			function s(e, t) {
				0 == --e._eventsCount ? e._events = new o : delete e._events[t]
			}

			function i() {
				this._events = new o, this._eventsCount = 0
			}
			Object.create && (o.prototype = Object.create(null), (new o).__proto__ || (n = !1)), i
				.prototype.eventNames = function() {
					var e, o, r = [];
					if (0 === this._eventsCount) return r;
					for (o in e = this._events) t.call(e, o) && r.push(n ? o.slice(1) : o);
					return Object.getOwnPropertySymbols ? r.concat(Object.getOwnPropertySymbols(e)) : r
				}, i.prototype.listeners = function(e) {
					var t = n ? n + e : e,
						o = this._events[t];
					if (!o) return [];
					if (o.fn) return [o.fn];
					for (var r = 0, a = o.length, s = new Array(a); r < a; r++) s[r] = o[r].fn;
					return s
				}, i.prototype.listenerCount = function(e) {
					var t = n ? n + e : e,
						o = this._events[t];
					return o ? o.fn ? 1 : o.length : 0
				}, i.prototype.emit = function(e, t, o, r, a, s) {
					var i = n ? n + e : e;
					if (!this._events[i]) return !1;
					var c, u, l = this._events[i],
						d = arguments.length;
					if (l.fn) {
						switch (l.once && this.removeListener(e, l.fn, void 0, !0), d) {
							case 1:
								return l.fn.call(l.context), !0;
							case 2:
								return l.fn.call(l.context, t), !0;
							case 3:
								return l.fn.call(l.context, t, o), !0;
							case 4:
								return l.fn.call(l.context, t, o, r), !0;
							case 5:
								return l.fn.call(l.context, t, o, r, a), !0;
							case 6:
								return l.fn.call(l.context, t, o, r, a, s), !0
						}
						for (u = 1, c = new Array(d - 1); u < d; u++) c[u - 1] = arguments[u];
						l.fn.apply(l.context, c)
					} else {
						var p, g = l.length;
						for (u = 0; u < g; u++) switch (l[u].once && this.removeListener(e, l[u].fn,
								void 0, !0), d) {
							case 1:
								l[u].fn.call(l[u].context);
								break;
							case 2:
								l[u].fn.call(l[u].context, t);
								break;
							case 3:
								l[u].fn.call(l[u].context, t, o);
								break;
							case 4:
								l[u].fn.call(l[u].context, t, o, r);
								break;
							default:
								if (!c)
									for (p = 1, c = new Array(d - 1); p < d; p++) c[p - 1] =
										arguments[p];
								l[u].fn.apply(l[u].context, c)
						}
					}
					return !0
				}, i.prototype.on = function(e, t, n) {
					return a(this, e, t, n, !1)
				}, i.prototype.once = function(e, t, n) {
					return a(this, e, t, n, !0)
				}, i.prototype.removeListener = function(e, t, o, r) {
					var a = n ? n + e : e;
					if (!this._events[a]) return this;
					if (!t) return s(this, a), this;
					var i = this._events[a];
					if (i.fn) i.fn !== t || r && !i.once || o && i.context !== o || s(this, a);
					else {
						for (var c = 0, u = [], l = i.length; c < l; c++)(i[c].fn !== t || r && !i[c]
							.once || o && i[c].context !== o) && u.push(i[c]);
						u.length ? this._events[a] = 1 === u.length ? u[0] : u : s(this, a)
					}
					return this
				}, i.prototype.removeAllListeners = function(e) {
					var t;
					return e ? (t = n ? n + e : e, this._events[t] && s(this, t)) : (this._events =
						new o, this._eventsCount = 0), this
				}, i.prototype.off = i.prototype.removeListener, i.prototype.addListener = i.prototype
				.on, i.prefixed = n, i.EventEmitter = i, e.exports = i
		})),
		Zm = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "BigDataChannelModule", r.FILETYPE = {
						SOUND: 2106,
						FILE: 2107,
						VIDEO: 2113
					}, r._bdh_download_server = "grouptalk.c2c.qq.com", r._BDHBizID = 10001, r._authKey = "", r
					._expireTime = 0, r.getInnerEmitterInstance().on(im.CONTEXT_A2KEY_AND_TINYID_UPDATED, r
						._getAuthKey, h(r)), r
			}
			return a(n, [{
				key: "_getAuthKey",
				value: function() {
					var e = this;
					this.request({
						protocolName: cl
					}).then((function(t) {
						t.data.authKey && (e._authKey = t.data.authKey, e
							._expireTime = parseInt(t.data.expireTime))
					}))
				}
			}, {
				key: "_isFromOlderVersion",
				value: function(e) {
					return !(!e.content || 2 === e.content.downloadFlag)
				}
			}, {
				key: "parseElements",
				value: function(e, t) {
					if (!Bi(e) || !t) return [];
					for (var n = [], o = null, r = 0; r < e.length; r++) o = e[r], this
						._needParse(o) ? n.push(this._parseElement(o, t)) : n.push(e[r]);
					return n
				}
			}, {
				key: "_needParse",
				value: function(e) {
					return !e.cloudCustomData && !(!this._isFromOlderVersion(e) || e.type !== Zn
						.MSG_AUDIO && e.type !== Zn.MSG_FILE && e.type !== Zn.MSG_VIDEO)
				}
			}, {
				key: "_parseElement",
				value: function(e, t) {
					switch (e.type) {
						case Zn.MSG_AUDIO:
							return this._parseAudioElement(e, t);
						case Zn.MSG_FILE:
							return this._parseFileElement(e, t);
						case Zn.MSG_VIDEO:
							return this._parseVideoElement(e, t)
					}
				}
			}, {
				key: "_parseAudioElement",
				value: function(e, t) {
					return e.content.url = this._genAudioUrl(e.content.uuid, t), e
				}
			}, {
				key: "_parseFileElement",
				value: function(e, t) {
					return e.content.url = this._genFileUrl(e.content.uuid, t, e.content
						.fileName), e
				}
			}, {
				key: "_parseVideoElement",
				value: function(e, t) {
					return e.content.url = this._genVideoUrl(e.content.uuid, t), e
				}
			}, {
				key: "_genAudioUrl",
				value: function(e, t) {
					if ("" === this._authKey) return Gi.warn("".concat(this._className,
						"._genAudioUrl no authKey!")), "";
					var n = this.getModule(Bu).getSDKAppID();
					return "https://".concat(this._bdh_download_server,
							"/asn.com/stddownload_common_file?authkey=").concat(this._authKey,
							"&bid=").concat(this._BDHBizID, "&subbid=").concat(n, "&fileid=")
						.concat(e, "&filetype=").concat(this.FILETYPE.SOUND, "&openid=").concat(
							t, "&ver=0")
				}
			}, {
				key: "_genFileUrl",
				value: function(e, t, n) {
					if ("" === this._authKey) return Gi.warn("".concat(this._className,
						"._genFileUrl no authKey!")), "";
					n || (n = "".concat(Math.floor(1e5 * Math.random()), "-").concat(Date
					.now()));
					var o = this.getModule(Bu).getSDKAppID();
					return "https://".concat(this._bdh_download_server,
							"/asn.com/stddownload_common_file?authkey=").concat(this._authKey,
							"&bid=").concat(this._BDHBizID, "&subbid=").concat(o, "&fileid=")
						.concat(e, "&filetype=").concat(this.FILETYPE.FILE, "&openid=").concat(
							t, "&ver=0&filename=").concat(encodeURIComponent(n))
				}
			}, {
				key: "_genVideoUrl",
				value: function(e, t) {
					if ("" === this._authKey) return Gi.warn("".concat(this._className,
						"._genVideoUrl no authKey!")), "";
					var n = this.getModule(Bu).getSDKAppID();
					return "https://".concat(this._bdh_download_server,
							"/asn.com/stddownload_common_file?authkey=").concat(this._authKey,
							"&bid=").concat(this._BDHBizID, "&subbid=").concat(n, "&fileid=")
						.concat(e, "&filetype=").concat(this.FILETYPE.VIDEO, "&openid=").concat(
							t, "&ver=0")
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._authKey = "", this
						.expireTime = 0
				}
			}]), n
		}(ol),
		ev = function(e) {
			i(r, e);
			var n = _(r);

			function r(e) {
				var t;
				return o(this, r), (t = n.call(this, e))._className = "UploadModule", t.TIMUploadPlugin = null,
					t.timUploadPlugin = null, t.COSSDK = null, t._cosUploadMethod = null, t.expiredTimeLimit =
					600, t.appid = 0, t.bucketName = "", t.ciUrl = "", t.directory = "", t.downloadUrl = "", t
					.uploadUrl = "", t.region = "ap-shanghai", t.cos = null, t.cosOptions = {
						secretId: "",
						secretKey: "",
						sessionToken: "",
						expiredTime: 0
					}, t.uploadFileType = "", t.duration = 900, t.tryCount = 0, t.getInnerEmitterInstance().on(
						im.CONTEXT_A2KEY_AND_TINYID_UPDATED, t._init, h(t)), t
			}
			return a(r, [{
				key: "_init",
				value: function() {
					var e = "".concat(this._className, "._init"),
						t = this.getModule(Wu);
					if (this.TIMUploadPlugin = t.getPlugin("tim-upload-plugin"), this
						.TIMUploadPlugin) this._initUploaderMethod();
					else {
						var n = Zs ? "cos-wx-sdk" : "cos-js-sdk";
						this.COSSDK = t.getPlugin(n), this.COSSDK ? (this
						._getAuthorizationKey(), Gi.warn("".concat(e,
								" v2.9.2起推荐使用 tim-upload-plugin 代替 ").concat(n,
								"，上传更快更安全。详细请参考 https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#registerPlugin"
								))) : Gi.warn("".concat(e,
							" 没有检测到上传插件，将无法发送图片、音频、视频、文件等类型的消息。详细请参考 https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#registerPlugin"
							))
					}
				}
			}, {
				key: "_getAuthorizationKey",
				value: function() {
					var e = this,
						t = new Lp(Kp),
						n = Math.ceil(Date.now() / 1e3);
					this.request({
						protocolName: Xl,
						requestData: {
							duration: this.expiredTimeLimit
						}
					}).then((function(o) {
						var r = o.data;
						Gi.log("".concat(e._className,
							"._getAuthorizationKey ok. data:"), r);
						var a = r.expiredTime - n;
						t.setMessage("requestId:".concat(r.requestId,
									" requestTime:").concat(n, " expiredTime:")
								.concat(r.expiredTime, " diff:").concat(a, "s"))
							.setNetworkType(e.getNetworkType()).end(), !Zs && r
							.region && (e.region = r.region), e.appid = r.appid, e
							.bucketName = r.bucketName, e.ciUrl = r.ciUrl, e
							.directory = r.directory, e.downloadUrl = r.downloadUrl,
							e.uploadUrl = r.uploadUrl, e.cosOptions = {
								secretId: r.secretId,
								secretKey: r.secretKey,
								sessionToken: r.sessionToken,
								expiredTime: r.expiredTime
							}, Gi.log("".concat(e._className,
								"._getAuthorizationKey ok. region:").concat(e
								.region, " bucketName:").concat(e.bucketName)), e
							._initUploaderMethod()
					})).catch((function(n) {
						e.probeNetwork().then((function(e) {
							var o = m(e, 2),
								r = o[0],
								a = o[1];
							t.setError(n, r, a).end()
						})), Gi.warn("".concat(e._className,
							"._getAuthorizationKey failed. error:"), n)
					}))
				}
			}, {
				key: "_getCosPreSigUrl",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, "._getCosPreSigUrl"),
						o = Math.ceil(Date.now() / 1e3),
						r = new Lp(Bp);
					return this.request({
						protocolName: Ql,
						requestData: {
							fileType: e.fileType,
							fileName: e.fileName,
							uploadMethod: e.uploadMethod,
							duration: e.duration
						}
					}).then((function(e) {
						t.tryCount = 0;
						var a = e.data || {},
							s = a.expiredTime - o;
						return Gi.log("".concat(n, " ok. data:"), a), r.setMessage(
								"requestId:".concat(a.requestId, " expiredTime:")
								.concat(a.expiredTime, " diff:").concat(s, "s"))
							.setNetworkType(t.getNetworkType()).end(), a
					})).catch((function(o) {
						return -1 === o.code && (o.code = cd.COS_GET_SIG_FAIL), t
							.probeNetwork().then((function(e) {
								var t = m(e, 2),
									n = t[0],
									a = t[1];
								r.setError(o, n, a).end()
							})), Gi.warn("".concat(n, " failed. error:"), o), t
							.tryCount < 1 ? (t.tryCount++, t._getCosPreSigUrl(e)) :
							(t.tryCount = 0, x_({
								code: cd.COS_GET_SIG_FAIL,
								message: md
							}))
					}))
				}
			}, {
				key: "_initUploaderMethod",
				value: function() {
					var e = this;
					if (this.TIMUploadPlugin) return this.timUploadPlugin = new this
						.TIMUploadPlugin, void(this._cosUploadMethod = function(t, n) {
							e.timUploadPlugin.uploadFile(t, n)
						});
					this.appid && (this.cos = Zs ? new this.COSSDK({
						ForcePathStyle: !0,
						getAuthorization: this._getAuthorization.bind(this)
					}) : new this.COSSDK({
						getAuthorization: this._getAuthorization.bind(this)
					}), this._cosUploadMethod = Zs ? function(t, n) {
						e.cos.postObject(t, n)
					} : function(t, n) {
						e.cos.uploadFiles(t, n)
					})
				}
			}, {
				key: "onCheckTimer",
				value: function(e) {
					this.COSSDK && (this.TIMUploadPlugin || this.isLoggedIn() && e % 60 == 0 &&
						Math.ceil(Date.now() / 1e3) >= this.cosOptions.expiredTime - 120 &&
						this._getAuthorizationKey())
				}
			}, {
				key: "_getAuthorization",
				value: function(e, t) {
					t({
						TmpSecretId: this.cosOptions.secretId,
						TmpSecretKey: this.cosOptions.secretKey,
						XCosSecurityToken: this.cosOptions.sessionToken,
						ExpiredTime: this.cosOptions.expiredTime
					})
				}
			}, {
				key: "upload",
				value: function(e) {
					if (!0 === e.getRelayFlag()) return Promise.resolve();
					var t = this.getModule(nl);
					switch (e.type) {
						case Zn.MSG_IMAGE:
							return t.addTotalCount(Ep), this._uploadImage(e);
						case Zn.MSG_FILE:
							return t.addTotalCount(Ep), this._uploadFile(e);
						case Zn.MSG_AUDIO:
							return t.addTotalCount(Ep), this._uploadAudio(e);
						case Zn.MSG_VIDEO:
							return t.addTotalCount(Ep), this._uploadVideo(e);
						default:
							return Promise.resolve()
					}
				}
			}, {
				key: "_uploadImage",
				value: function(e) {
					var n = this.getModule(Gu),
						o = e.getElements()[0],
						r = n.getMessageOptionByID(e.ID);
					return this.doUploadImage({
						file: r.payload.file,
						to: r.to,
						onProgress: function(e) {
							if (o.updatePercent(e), $i(r.onProgress)) try {
								r.onProgress(e)
							} catch (t) {
								return x_({
									code: cd
										.MESSAGE_ONPROGRESS_FUNCTION_ERROR,
									message: Sd
								})
							}
						}
					}).then((function(n) {
						var r = n.location,
							a = n.fileType,
							s = n.fileSize,
							i = n.width,
							c = n.height,
							u = ic(r);
						o.updateImageFormat(a);
						var l = _c({
								originUrl: u,
								originWidth: i,
								originHeight: c,
								min: 198
							}),
							d = _c({
								originUrl: u,
								originWidth: i,
								originHeight: c,
								min: 720
							});
						return o.updateImageInfoArray([{
							size: s,
							url: u,
							width: i,
							height: c
						}, t({}, d), t({}, l)]), e
					}))
				}
			}, {
				key: "_uploadFile",
				value: function(e) {
					var t = this.getModule(Gu),
						n = e.getElements()[0],
						o = t.getMessageOptionByID(e.ID);
					return this.doUploadFile({
						file: o.payload.file,
						to: o.to,
						onProgress: function(e) {
							if (n.updatePercent(e), $i(o.onProgress)) try {
								o.onProgress(e)
							} catch (t) {
								return x_({
									code: cd
										.MESSAGE_ONPROGRESS_FUNCTION_ERROR,
									message: Sd
								})
							}
						}
					}).then((function(t) {
						var o = t.location,
							r = ic(o);
						return n.updateFileUrl(r), e
					}))
				}
			}, {
				key: "_uploadAudio",
				value: function(e) {
					var t = this.getModule(Gu),
						n = e.getElements()[0],
						o = t.getMessageOptionByID(e.ID);
					return this.doUploadAudio({
						file: o.payload.file,
						to: o.to,
						onProgress: function(e) {
							if (n.updatePercent(e), $i(o.onProgress)) try {
								o.onProgress(e)
							} catch (t) {
								return x_({
									code: cd
										.MESSAGE_ONPROGRESS_FUNCTION_ERROR,
									message: Sd
								})
							}
						}
					}).then((function(t) {
						var o = t.location,
							r = ic(o);
						return n.updateAudioUrl(r), e
					}))
				}
			}, {
				key: "_uploadVideo",
				value: function(e) {
					var t = this.getModule(Gu),
						n = e.getElements()[0],
						o = t.getMessageOptionByID(e.ID);
					return this.doUploadVideo({
						file: o.payload.file,
						to: o.to,
						onProgress: function(e) {
							if (n.updatePercent(e), $i(o.onProgress)) try {
								o.onProgress(e)
							} catch (t) {
								return x_({
									code: cd
										.MESSAGE_ONPROGRESS_FUNCTION_ERROR,
									message: Sd
								})
							}
						}
					}).then((function(t) {
						var o = ic(t.location);
						return n.updateVideoUrl(o), e
					}))
				}
			}, {
				key: "doUploadImage",
				value: function(e) {
					if (!e.file) return x_({
						code: cd.MESSAGE_IMAGE_SELECT_FILE_FIRST,
						message: Dd
					});
					var t = this._checkImageType(e.file);
					if (!0 !== t) return t;
					var n = this._checkImageSize(e.file);
					if (!0 !== n) return n;
					var o = null;
					return this._setUploadFileType(dm), this.uploadByCOS(e).then((function(e) {
						return o = e, t = "https://".concat(e.location), Zs ?
							new Promise((function(e, n) {
								ti.getImageInfo({
									src: t,
									success: function(t) {
										e({
											width: t
												.width,
											height: t
												.height
										})
									},
									fail: function() {
										e({
											width: 0,
											height: 0
										})
									}
								})
							})) : gi && 9 === hi ? Promise.resolve({
								width: 0,
								height: 0
							}) : new Promise((function(e, n) {
								var o = new Image;
								o.onload = function() {
									e({
										width: this.width,
										height: this.height
									}), o = null
								}, o.onerror = function() {
									e({
										width: 0,
										height: 0
									}), o = null
								}, o.src = t
							}));
						var t
					})).then((function(e) {
						return o.width = e.width, o.height = e.height, Promise
							.resolve(o)
					}))
				}
			}, {
				key: "_checkImageType",
				value: function(e) {
					var t = "";
					return t = Zs ? e.url.slice(e.url.lastIndexOf(".") + 1) : e.files[0].name
						.slice(e.files[0].name.lastIndexOf(".") + 1), um.indexOf(t
						.toLowerCase()) >= 0 || x_({
							code: cd.MESSAGE_IMAGE_TYPES_LIMIT,
							message: kd
						})
				}
			}, {
				key: "_checkImageSize",
				value: function(e) {
					var t = 0;
					return 0 === (t = Zs ? e.size : e.files[0].size) ? x_({
						code: cd.MESSAGE_FILE_IS_EMPTY,
						message: "".concat(Id)
					}) : t < 20971520 || x_({
						code: cd.MESSAGE_IMAGE_SIZE_LIMIT,
						message: "".concat(Cd)
					})
				}
			}, {
				key: "doUploadFile",
				value: function(e) {
					var t = null;
					return e.file ? e.file.files[0].size > 104857600 ? x_(t = {
						code: cd.MESSAGE_FILE_SIZE_LIMIT,
						message: Pd
					}) : 0 === e.file.files[0].size ? (t = {
						code: cd.MESSAGE_FILE_IS_EMPTY,
						message: "".concat(Id)
					}, x_(t)) : (this._setUploadFileType(hm), this.uploadByCOS(e)) : x_(
					t = {
						code: cd.MESSAGE_FILE_SELECT_FILE_FIRST,
						message: bd
					})
				}
			}, {
				key: "doUploadVideo",
				value: function(e) {
					return e.file.videoFile.size > 104857600 ? x_({
						code: cd.MESSAGE_VIDEO_SIZE_LIMIT,
						message: "".concat(Ld)
					}) : 0 === e.file.videoFile.size ? x_({
						code: cd.MESSAGE_FILE_IS_EMPTY,
						message: "".concat(Id)
					}) : -1 === lm.indexOf(e.file.videoFile.type) ? x_({
						code: cd.MESSAGE_VIDEO_TYPES_LIMIT,
						message: "".concat(Rd)
					}) : (this._setUploadFileType(pm), Zs ? this.handleVideoUpload({
						file: e.file.videoFile,
						onProgress: e.onProgress
					}) : ei ? this.handleVideoUpload(e) : void 0)
				}
			}, {
				key: "handleVideoUpload",
				value: function(e) {
					var t = this;
					return new Promise((function(n, o) {
						t.uploadByCOS(e).then((function(e) {
							n(e)
						})).catch((function() {
							t.uploadByCOS(e).then((function(e) {
								n(e)
							})).catch((function() {
								o(new G_({
									code: cd
										.MESSAGE_VIDEO_UPLOAD_FAIL,
									message: Od
								}))
							}))
						}))
					}))
				}
			}, {
				key: "doUploadAudio",
				value: function(e) {
					return e.file ? e.file.size > 20971520 ? x_(new G_({
						code: cd.MESSAGE_AUDIO_SIZE_LIMIT,
						message: "".concat(Ad)
					})) : 0 === e.file.size ? x_(new G_({
						code: cd.MESSAGE_FILE_IS_EMPTY,
						message: "".concat(Id)
					})) : (this._setUploadFileType(gm), this.uploadByCOS(e)) : x_(new G_({
						code: cd.MESSAGE_AUDIO_UPLOAD_FAIL,
						message: Nd
					}))
				}
			}, {
				key: "uploadByCOS",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, ".uploadByCOS");
					if (!$i(this._cosUploadMethod)) return Gi.warn("".concat(n,
						" 没有检测到上传插件，将无法发送图片、音频、视频、文件等类型的消息。详细请参考 https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#registerPlugin"
						)), x_({
						code: cd.COS_UNDETECTED,
						message: _d
					});
					if (this.timUploadPlugin) return this._uploadWithPreSigUrl(e);
					var o = new Lp(jp),
						r = Date.now(),
						a = Zs ? e.file : e.file.files[0];
					return new Promise((function(s, i) {
						var c = Zs ? t._createCosOptionsWXMiniApp(e) : t
							._createCosOptionsWeb(e),
							u = t;
						t._cosUploadMethod(c, (function(e, c) {
							var l = Object.create(null);
							if (c) {
								if (e || Bi(c.files) && c.files[0]
									.error) {
									var d = new G_({
										code: cd
											.MESSAGE_FILE_UPLOAD_FAIL,
										message: wd
									});
									return o.setError(d, !0, t
											.getNetworkType()).end(), Gi
										.log("".concat(n,
												" failed. error:"), c
											.files[0].error), 403 === c
										.files[0].error.statusCode && (
											Gi.warn("".concat(n,
												" failed. cos AccessKeyId was invalid, regain auth key!"
												)), t
											._getAuthorizationKey()),
										void i(d)
								}
								l.fileName = a.name, l.fileSize = a
									.size, l.fileType = a.type.slice(a
										.type.indexOf("/") + 1)
									.toLowerCase(), l.location = Zs ? c
									.Location : c.files[0].data
									.Location;
								var p = Date.now() - r,
									g = u._formatFileSize(a.size),
									h = u._formatSpeed(1e3 * a.size /
									p),
									f = "size:".concat(g, " time:")
									.concat(p, "ms speed:").concat(h);
								Gi.log("".concat(n, " success. name:")
										.concat(a.name, " ").concat(f)),
									s(l);
								var _ = t.getModule(nl);
								return _.addCost(Ep, p), _.addFileSize(
										Ep, a.size), void o
									.setNetworkType(t.getNetworkType())
									.setMessage(f).end()
							}
							var m = new G_({
								code: cd
									.MESSAGE_FILE_UPLOAD_FAIL,
								message: wd
							});
							o.setError(m, !0, u.getNetworkType()).end(),
								Gi.warn("".concat(n, " failed. error:"),
									e), 403 === e.statusCode && (Gi
									.warn("".concat(n,
										" failed. cos AccessKeyId was invalid, regain auth key!"
										)), t._getAuthorizationKey()),
								i(m)
						}))
					}))
				}
			}, {
				key: "_uploadWithPreSigUrl",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, "._uploadWithPreSigUrl"),
						o = Zs ? e.file : e.file.files[0];
					return this._createCosOptionsPreSigUrl(e).then((function(e) {
						return new Promise((function(r, a) {
							var s = new Lp(jp);
							Gi.time(mp), t._cosUploadMethod(e, (
								function(e, i) {
									var c = Object.create(null);
									if (e || 403 === i
										.statusCode) {
										var u = new G_({
											code: cd
												.MESSAGE_FILE_UPLOAD_FAIL,
											message: wd
										});
										return s.setError(u, !0,
												t
												.getNetworkType()
												).end(), Gi.log(
												"".concat(n,
													" failed, error:"
													), e),
											void a(u)
									}
									var l = i.data.location ||
										"";
									0 !== l.indexOf(
										"https://") && 0 !== l
										.indexOf("http://") || (
											l = l.split("//")[1]
											), c.fileName = o
										.name, c.fileSize = o
										.size, c.fileType = o
										.type.slice(o.type
											.indexOf("/") + 1)
										.toLowerCase(), c
										.location = l;
									var d = Gi.timeEnd(mp),
										p = t._formatFileSize(o
											.size),
										g = t._formatSpeed(1e3 *
											o.size / d),
										h = "size:".concat(p,
											",time:").concat(d,
											"ms,speed:").concat(
											g);
									Gi.log("".concat(n,
											" success name:"
											).concat(o.name,
											",").concat(h)), s
										.setNetworkType(t
											.getNetworkType())
										.setMessage(h).end();
									var f = t.getModule(nl);
									f.addCost(Ep, d), f
										.addFileSize(Ep, o
										.size), r(c)
								}))
						}))
					}))
				}
			}, {
				key: "_formatFileSize",
				value: function(e) {
					return e < 1024 ? e + "B" : e < 1048576 ? Math.floor(e / 1024) + "KB" : Math
						.floor(e / 1048576) + "MB"
				}
			}, {
				key: "_formatSpeed",
				value: function(e) {
					return e <= 1048576 ? Mc(e / 1024, 1) + "KB/s" : Mc(e / 1048576, 1) + "MB/s"
				}
			}, {
				key: "_createCosOptionsWeb",
				value: function(e) {
					var t = this.getMyUserID(),
						n = this._genFileName(t, e.to, e.file.files[0].name);
					return {
						files: [{
							Bucket: "".concat(this.bucketName, "-").concat(this.appid),
							Region: this.region,
							Key: "".concat(this.directory, "/").concat(n),
							Body: e.file.files[0]
						}],
						SliceSize: 1048576,
						onProgress: function(t) {
							if ("function" == typeof e.onProgress) try {
								e.onProgress(t.percent)
							} catch (n) {
								Gi.warn("onProgress callback error:", n)
							}
						},
						onFileFinish: function(e, t, n) {}
					}
				}
			}, {
				key: "_createCosOptionsWXMiniApp",
				value: function(e) {
					var t = this.getMyUserID(),
						n = this._genFileName(t, e.to, e.file.name),
						o = e.file.url;
					return {
						Bucket: "".concat(this.bucketName, "-").concat(this.appid),
						Region: this.region,
						Key: "".concat(this.directory, "/").concat(n),
						FilePath: o,
						onProgress: function(t) {
							if (Gi.log(JSON.stringify(t)), "function" == typeof e
								.onProgress) try {
								e.onProgress(t.percent)
							} catch (n) {
								Gi.warn("onProgress callback error:", n)
							}
						}
					}
				}
			}, {
				key: "_createCosOptionsPreSigUrl",
				value: function(e) {
					var t = this,
						n = "",
						o = "",
						r = 0;
					return Zs ? (n = this._genFileName(e.file.name), o = e.file.url, r = 1) : (
						n = this._genFileName("".concat(tc(999999))), o = e.file.files[0],
						r = 0), this._getCosPreSigUrl({
						fileType: this.uploadFileType,
						fileName: n,
						uploadMethod: r,
						duration: this.duration
					}).then((function(r) {
						var a = r.uploadUrl,
							s = r.downloadUrl;
						return {
							url: a,
							fileType: t.uploadFileType,
							fileName: n,
							resources: o,
							downloadUrl: s,
							onProgress: function(t) {
								if ("function" == typeof e.onProgress) try {
									e.onProgress(t.percent)
								} catch (n) {
									Gi.warn("onProgress callback error:",
										n), Gi.error(n)
								}
							}
						}
					}))
				}
			}, {
				key: "_genFileName",
				value: function(e) {
					return "".concat(hc(), "-").concat(e)
				}
			}, {
				key: "_setUploadFileType",
				value: function(e) {
					this.uploadFileType = e
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset"))
				}
			}]), r
		}(ol),
		tv = ["downloadKey", "pbDownloadKey", "messageList"],
		nv = function() {
			function e(t) {
				o(this, e), this._className = "MergerMessageHandler", this._messageModule = t
			}
			return a(e, [{
				key: "uploadMergerMessage",
				value: function(e, t) {
					var n = this;
					Gi.debug("".concat(this._className, ".uploadMergerMessage message:"), e,
						"messageBytes:".concat(t));
					var o = e.payload.messageList,
						r = o.length,
						a = new Lp(eg);
					return this._messageModule.request({
						protocolName: rd,
						requestData: {
							messageList: o
						}
					}).then((function(e) {
						Gi.debug("".concat(n._className,
							".uploadMergerMessage ok. response:"), e.data);
						var o = e.data,
							s = o.pbDownloadKey,
							i = o.downloadKey,
							c = {
								pbDownloadKey: s,
								downloadKey: i,
								messageNumber: r
							};
						return a.setNetworkType(n._messageModule.getNetworkType())
							.setMessage("".concat(r, "-").concat(t, "-").concat(i))
							.end(), c
					})).catch((function(e) {
						throw Gi.warn("".concat(n._className,
								".uploadMergerMessage failed. error:"), e), n
							._messageModule.probeNetwork().then((function(t) {
								var n = m(t, 2),
									o = n[0],
									r = n[1];
								a.setError(e, o, r).end()
							})), e
					}))
				}
			}, {
				key: "downloadMergerMessage",
				value: function(e) {
					var n = this;
					Gi.debug("".concat(this._className, ".downloadMergerMessage message:"), e);
					var o = e.payload.downloadKey,
						r = new Lp(tg);
					return r.setMessage("downloadKey:".concat(o)), this._messageModule.request({
						protocolName: ad,
						requestData: {
							downloadKey: o
						}
					}).then((function(o) {
						if (Gi.debug("".concat(n._className,
								".downloadMergerMessage ok. response:"), o.data),
							$i(e.clearElement)) {
							var a = e.payload,
								s = (a.downloadKey, a.pbDownloadKey, a.messageList,
									g(a, tv));
							e.clearElement(), e.setElement({
								type: e.type,
								content: t({
									messageList: o.data.messageList
								}, s)
							})
						} else {
							var i = [];
							o.data.messageList.forEach((function(e) {
									if (!Tc(e)) {
										var t = new k_(e);
										i.push(t)
									}
								})), e.payload.messageList = i, e.payload
								.downloadKey = "", e.payload.pbDownloadKey = ""
						}
						return r.setNetworkType(n._messageModule.getNetworkType())
							.end(), e
					})).catch((function(e) {
						throw Gi.warn("".concat(n._className,
								".downloadMergerMessage failed. key:").concat(o,
								" error:"), e), n._messageModule.probeNetwork()
							.then((function(t) {
								var n = m(t, 2),
									o = n[0],
									a = n[1];
								r.setError(e, o, a).end()
							})), e
					}))
				}
			}, {
				key: "createMergerMessagePack",
				value: function(e, t, n) {
					return e.conversationType === Zn.CONV_C2C ? this
						._createC2CMergerMessagePack(e, t, n) : this
						._createGroupMergerMessagePack(e, t, n)
				}
			}, {
				key: "_createC2CMergerMessagePack",
				value: function(e, t, n) {
					var o = null;
					t && (t.offlinePushInfo && (o = t.offlinePushInfo), !0 === t
						.onlineUserOnly && (o ? o.disablePush = !0 : o = {
							disablePush: !0
						}));
					var r = "";
					xi(e.cloudCustomData) && e.cloudCustomData.length > 0 && (r = e
						.cloudCustomData);
					var a = n.pbDownloadKey,
						s = n.downloadKey,
						i = n.messageNumber,
						c = e.payload,
						u = c.title,
						l = c.abstractList,
						d = c.compatibleText,
						p = this._messageModule.getModule(Fu);
					return {
						protocolName: ul,
						tjgID: this._messageModule.generateTjgID(e),
						requestData: {
							fromAccount: this._messageModule.getMyUserID(),
							toAccount: e.to,
							msgBody: [{
								msgType: e.type,
								msgContent: {
									pbDownloadKey: a,
									downloadKey: s,
									title: u,
									abstractList: l,
									compatibleText: d,
									messageNumber: i
								}
							}],
							cloudCustomData: r,
							msgSeq: e.sequence,
							msgRandom: e.random,
							msgLifeTime: p && p.isOnlineMessage(e, t) ? 0 : void 0,
							offlinePushInfo: o ? {
								pushFlag: !0 === o.disablePush ? 1 : 0,
								title: o.title || "",
								desc: o.description || "",
								ext: o.extension || "",
								apnsInfo: {
									badgeMode: !0 === o.ignoreIOSBadge ? 1 : 0
								},
								androidInfo: {
									OPPOChannelID: o.androidOPPOChannelID || ""
								}
							} : void 0
						}
					}
				}
			}, {
				key: "_createGroupMergerMessagePack",
				value: function(e, t, n) {
					var o = null;
					t && t.offlinePushInfo && (o = t.offlinePushInfo);
					var r = "";
					xi(e.cloudCustomData) && e.cloudCustomData.length > 0 && (r = e
						.cloudCustomData);
					var a = n.pbDownloadKey,
						s = n.downloadKey,
						i = n.messageNumber,
						c = e.payload,
						u = c.title,
						l = c.abstractList,
						d = c.compatibleText,
						p = this._messageModule.getModule(qu);
					return {
						protocolName: ll,
						tjgID: this._messageModule.generateTjgID(e),
						requestData: {
							fromAccount: this._messageModule.getMyUserID(),
							groupID: e.to,
							msgBody: [{
								msgType: e.type,
								msgContent: {
									pbDownloadKey: a,
									downloadKey: s,
									title: u,
									abstractList: l,
									compatibleText: d,
									messageNumber: i
								}
							}],
							random: e.random,
							priority: e.priority,
							clientSequence: e.clientSequence,
							groupAtInfo: void 0,
							cloudCustomData: r,
							onlineOnlyFlag: p && p.isOnlineMessage(e, t) ? 1 : 0,
							offlinePushInfo: o ? {
								pushFlag: !0 === o.disablePush ? 1 : 0,
								title: o.title || "",
								desc: o.description || "",
								ext: o.extension || "",
								apnsInfo: {
									badgeMode: !0 === o.ignoreIOSBadge ? 1 : 0
								},
								androidInfo: {
									OPPOChannelID: o.androidOPPOChannelID || ""
								}
							} : void 0
						}
					}
				}
			}]), e
		}(),
		ov = {
			ERR_SVR_COMM_SENSITIVE_TEXT: 80001,
			ERR_SVR_COMM_BODY_SIZE_LIMIT: 80002,
			ERR_SVR_MSG_PKG_PARSE_FAILED: 20001,
			ERR_SVR_MSG_INTERNAL_AUTH_FAILED: 20002,
			ERR_SVR_MSG_INVALID_ID: 20003,
			ERR_SVR_MSG_PUSH_DENY: 20006,
			ERR_SVR_MSG_IN_PEER_BLACKLIST: 20007,
			ERR_SVR_MSG_BOTH_NOT_FRIEND: 20009,
			ERR_SVR_MSG_NOT_PEER_FRIEND: 20010,
			ERR_SVR_MSG_NOT_SELF_FRIEND: 20011,
			ERR_SVR_MSG_SHUTUP_DENY: 20012,
			ERR_SVR_GROUP_INVALID_PARAMETERS: 10004,
			ERR_SVR_GROUP_PERMISSION_DENY: 10007,
			ERR_SVR_GROUP_NOT_FOUND: 10010,
			ERR_SVR_GROUP_INVALID_GROUPID: 10015,
			ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY: 10016,
			ERR_SVR_GROUP_SHUTUP_DENY: 10017,
			MESSAGE_SEND_FAIL: 2100
		},
		rv = [cd.MESSAGE_ONPROGRESS_FUNCTION_ERROR, cd.MESSAGE_IMAGE_SELECT_FILE_FIRST, cd
			.MESSAGE_IMAGE_TYPES_LIMIT, cd.MESSAGE_FILE_IS_EMPTY, cd.MESSAGE_IMAGE_SIZE_LIMIT, cd
			.MESSAGE_FILE_SELECT_FILE_FIRST, cd.MESSAGE_FILE_SIZE_LIMIT, cd.MESSAGE_VIDEO_SIZE_LIMIT, cd
			.MESSAGE_VIDEO_TYPES_LIMIT, cd.MESSAGE_AUDIO_UPLOAD_FAIL, cd.MESSAGE_AUDIO_SIZE_LIMIT, cd
			.COS_UNDETECTED
		];
	var av = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "MessageModule", r._messageOptionsMap =
					new Map, r._mergerMessageHandler = new nv(h(r)), r
			}
			return a(n, [{
				key: "createTextMessage",
				value: function(e) {
					var t = this.getMyUserID();
					e.currentUser = t;
					var n = new A_(e),
						o = "string" == typeof e.payload ? e.payload : e.payload.text,
						r = new Xg({
							text: o
						}),
						a = this._getNickAndAvatarByUserID(t);
					return n.setElement(r), n.setNickAndAvatar(a), n
				}
			}, {
				key: "createImageMessage",
				value: function(e) {
					var t = this.getMyUserID();
					e.currentUser = t;
					var n = new A_(e);
					if (Zs) {
						var o = e.payload.file;
						if (Fi(o)) return void Gi.warn(
							"小程序环境下调用 createImageMessage 接口时，payload.file 不支持传入 File 对象"
							);
						var r = o.tempFilePaths[0],
							a = {
								url: r,
								name: r.slice(r.lastIndexOf("/") + 1),
								size: o.tempFiles && o.tempFiles[0].size || 1,
								type: r.slice(r.lastIndexOf(".") + 1).toLowerCase()
							};
						e.payload.file = a
					} else if (ei)
						if (Fi(e.payload.file)) {
							var s = e.payload.file;
							e.payload.file = {
								files: [s]
							}
						} else if (Ki(e.payload.file) && "undefined" != typeof uni) {
						var i = e.payload.file.tempFiles[0];
						e.payload.file = {
							files: [i]
						}
					}
					var c = new l_({
							imageFormat: o_.IMAGE_FORMAT.UNKNOWN,
							uuid: this._generateUUID(),
							file: e.payload.file
						}),
						u = this._getNickAndAvatarByUserID(t);
					return n.setElement(c), n.setNickAndAvatar(u), this._messageOptionsMap.set(n
						.ID, e), n
				}
			}, {
				key: "createAudioMessage",
				value: function(e) {
					if (Zs) {
						var t = e.payload.file;
						if (Zs) {
							var n = {
								url: t.tempFilePath,
								name: t.tempFilePath.slice(t.tempFilePath.lastIndexOf("/") +
									1),
								size: t.fileSize,
								second: parseInt(t.duration) / 1e3,
								type: t.tempFilePath.slice(t.tempFilePath.lastIndexOf(".") +
									1).toLowerCase()
							};
							e.payload.file = n
						}
						var o = this.getMyUserID();
						e.currentUser = o;
						var r = new A_(e),
							a = new p_({
								second: Math.floor(t.duration / 1e3),
								size: t.fileSize,
								url: t.tempFilePath,
								uuid: this._generateUUID()
							}),
							s = this._getNickAndAvatarByUserID(o);
						return r.setElement(a), r.setNickAndAvatar(s), this._messageOptionsMap
							.set(r.ID, e), r
					}
					Gi.warn("createAudioMessage 目前只支持小程序环境下发语音消息")
				}
			}, {
				key: "createVideoMessage",
				value: function(e) {
					var t = this.getMyUserID();
					e.currentUser = t, e.payload.file.thumbUrl =
						"https://web.sdk.qcloud.com/im/assets/images/transparent.png", e.payload
						.file.thumbSize = 1668;
					var n = {};
					if (Zs) {
						if (Xs) return void Gi.warn("createVideoMessage 不支持在支付宝小程序环境下使用");
						if (Fi(e.payload.file)) return void Gi.warn(
							"小程序环境下调用 createVideoMessage 接口时，payload.file 不支持传入 File 对象"
							);
						var o = e.payload.file;
						n.url = o.tempFilePath, n.name = o.tempFilePath.slice(o.tempFilePath
								.lastIndexOf("/") + 1), n.size = o.size, n.second = o.duration,
							n.type = o.tempFilePath.slice(o.tempFilePath.lastIndexOf(".") + 1)
							.toLowerCase()
					} else if (ei) {
						if (Fi(e.payload.file)) {
							var r = e.payload.file;
							e.payload.file.files = [r]
						} else if (Ki(e.payload.file) && "undefined" != typeof uni) {
							var a = e.payload.file.tempFile;
							e.payload.file.files = [a]
						}
						var s = e.payload.file;
						n.url = window.URL.createObjectURL(s.files[0]), n.name = s.files[0]
							.name, n.size = s.files[0].size, n.second = s.files[0].duration ||
							0, n.type = s.files[0].type.split("/")[1]
					}
					e.payload.file.videoFile = n;
					var i = new A_(e),
						c = new E_({
							videoFormat: n.type,
							videoSecond: Mc(n.second, 0),
							videoSize: n.size,
							remoteVideoUrl: "",
							videoUrl: n.url,
							videoUUID: this._generateUUID(),
							thumbUUID: this._generateUUID(),
							thumbWidth: e.payload.file.width || 200,
							thumbHeight: e.payload.file.height || 200,
							thumbUrl: e.payload.file.thumbUrl,
							thumbSize: e.payload.file.thumbSize,
							thumbFormat: e.payload.file.thumbUrl.slice(e.payload.file
								.thumbUrl.lastIndexOf(".") + 1).toLowerCase()
						}),
						u = this._getNickAndAvatarByUserID(t);
					return i.setElement(c), i.setNickAndAvatar(u), this._messageOptionsMap.set(i
						.ID, e), i
				}
			}, {
				key: "createCustomMessage",
				value: function(e) {
					var t = this.getMyUserID();
					e.currentUser = t;
					var n = new A_(e),
						o = new T_({
							data: e.payload.data,
							description: e.payload.description,
							extension: e.payload.extension
						}),
						r = this._getNickAndAvatarByUserID(t);
					return n.setElement(o), n.setNickAndAvatar(r), n
				}
			}, {
				key: "createFaceMessage",
				value: function(e) {
					var t = this.getMyUserID();
					e.currentUser = t;
					var n = new A_(e),
						o = new d_(e.payload),
						r = this._getNickAndAvatarByUserID(t);
					return n.setElement(o), n.setNickAndAvatar(r), n
				}
			}, {
				key: "createMergerMessage",
				value: function(e) {
					var t = this.getMyUserID();
					e.currentUser = t;
					var n = this._getNickAndAvatarByUserID(t),
						o = new A_(e),
						r = new C_(e.payload);
					return o.setElement(r), o.setNickAndAvatar(n), o.setRelayFlag(!0), o
				}
			}, {
				key: "createForwardMessage",
				value: function(e) {
					var t = e.to,
						n = e.conversationType,
						o = e.priority,
						r = e.payload,
						a = this.getMyUserID(),
						s = this._getNickAndAvatarByUserID(a);
					if (r.type === Zn.MSG_GRP_TIP) return x_(new G_({
						code: cd.MESSAGE_FORWARD_TYPE_INVALID,
						message: xd
					}));
					var i = {
							to: t,
							conversationType: n,
							conversationID: "".concat(n).concat(t),
							priority: o,
							isPlaceMessage: 0,
							status: mu.UNSEND,
							currentUser: a,
							cloudCustomData: e.cloudCustomData || r.cloudCustomData || ""
						},
						c = new A_(i);
					return c.setElement(r.getElements()[0]), c.setNickAndAvatar(s), c
						.setRelayFlag(!0), c
				}
			}, {
				key: "downloadMergerMessage",
				value: function(e) {
					return this._mergerMessageHandler.downloadMergerMessage(e)
				}
			}, {
				key: "createFileMessage",
				value: function(e) {
					if (!Zs) {
						if (ei)
							if (Fi(e.payload.file)) {
								var t = e.payload.file;
								e.payload.file = {
									files: [t]
								}
							} else if (Ki(e.payload.file) && "undefined" != typeof uni) {
							var n = e.payload.file.tempFiles[0];
							e.payload.file = {
								files: [n]
							}
						}
						var o = this.getMyUserID();
						e.currentUser = o;
						var r = new A_(e),
							a = new S_({
								uuid: this._generateUUID(),
								file: e.payload.file
							}),
							s = this._getNickAndAvatarByUserID(o);
						return r.setElement(a), r.setNickAndAvatar(s), this._messageOptionsMap
							.set(r.ID, e), r
					}
					Gi.warn("小程序目前不支持选择文件， createFileMessage 接口不可用！")
				}
			}, {
				key: "_onCannotFindModule",
				value: function() {
					return x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "sendMessageInstance",
				value: function(e, t) {
					var n, o = this,
						r = null;
					switch (e.conversationType) {
						case Zn.CONV_C2C:
							if (!(r = this.getModule(Fu))) return this._onCannotFindModule();
							break;
						case Zn.CONV_GROUP:
							if (!(r = this.getModule(qu))) return this._onCannotFindModule();
							break;
						default:
							return x_({
								code: cd.MESSAGE_SEND_INVALID_CONVERSATION_TYPE,
								message: yd
							})
					}
					var a = this.getModule(zu),
						s = this.getModule(qu);
					return a.upload(e).then((function() {
						o._getSendMessageSpecifiedKey(e) === Tp && o.getModule(nl)
							.addSuccessCount(Ep);
						return s.guardForAVChatRoom(e).then((function() {
							if (!e.isSendable()) return x_({
								code: cd
									.MESSAGE_FILE_URL_IS_EMPTY,
								message: Gd
							});
							o._addSendMessageTotalCount(e), n = Date
								.now();
							var a = function(e) {
								var t = "utf-8";
								ei && document && (t = document
									.charset.toLowerCase());
								var n, o, r = 0;
								if (o = e.length, "utf-8" === t ||
									"utf8" === t)
									for (var a = 0; a < o; a++)(n =
											e.codePointAt(a)) <=
										127 ? r += 1 : n <= 2047 ?
										r += 2 : n <= 65535 ? r +=
										3 : (r += 4, a++);
								else if ("utf-16" === t ||
									"utf16" === t)
									for (var s = 0; s < o; s++)(n =
											e.codePointAt(s)) <=
										65535 ? r += 2 : (r += 4,
											s++);
								else r = e.replace(/[^\x00-\xff]/g,
									"aa").length;
								return r
							}(JSON.stringify(e));
							return e.type === Zn.MSG_MERGER && a > 7e3 ?
								o._mergerMessageHandler
								.uploadMergerMessage(e, a).then((
									function(n) {
										var r = o
											._mergerMessageHandler
											.createMergerMessagePack(
												e, t, n);
										return o.request(r)
									})) : (o.getModule(Ku)
									.setMessageRandom(e), e
									.conversationType === Zn.CONV_C2C ||
									e.conversationType === Zn
									.CONV_GROUP ? r.sendMessage(e, t) :
									void 0)
						})).then((function(a) {
							var s = a.data,
								i = s.time,
								c = s.sequence;
							o._addSendMessageSuccessCount(e, n), o
								._messageOptionsMap.delete(e.ID);
							var u = o.getModule(Ku);
							e.status = mu.SUCCESS, e.time = i;
							var l = !1;
							if (e.conversationType === Zn.CONV_GROUP) e
								.sequence = c, e.generateMessageID(o
									.getMyUserID());
							else if (e.conversationType === Zn
								.CONV_C2C) {
								var d = u.getLatestMessageSentByMe(e
									.conversationID);
								if (d) {
									var p = d.nick,
										g = d.avatar;
									p === e.nick && g === e.avatar || (
										l = !0)
								}
							}
							return u.appendToMessageList(e), l && u
								.modifyMessageSentByMe({
									conversationID: e
										.conversationID,
									latestNick: e.nick,
									latestAvatar: e.avatar
								}), r.isOnlineMessage(e, t) ? e
								.setOnlineOnlyFlag(!0) : u
								.onMessageSent({
									conversationOptionsList: [{
										conversationID: e
											.conversationID,
										unreadCount: 0,
										type: e
											.conversationType,
										subType: e
											.conversationSubType,
										lastMessage: e
									}]
								}), e.getRelayFlag() ||
								"TIMImageElem" !== e.type || mc(e
									.payload.imageInfoArray), O_({
									message: e
								})
						}))
					})).catch((function(t) {
						return o._onSendMessageFailed(e, t)
					}))
				}
			}, {
				key: "_onSendMessageFailed",
				value: function(e, t) {
					e.status = mu.FAIL, this.getModule(Ku).deleteMessageRandom(e), this
						._addSendMessageFailCountOnUser(e, t);
					var n = new Lp(Hp);
					return n.setMessage("tjg_id:".concat(this.generateTjgID(e), " type:")
							.concat(e.type, " from:").concat(e.from, " to:").concat(e.to)), this
						.probeNetwork().then((function(e) {
							var o = m(e, 2),
								r = o[0],
								a = o[1];
							n.setError(t, r, a).end()
						})), Gi.error("".concat(this._className,
							"._onSendMessageFailed error:"), t), x_(new G_({
							code: t && t.code ? t.code : cd.MESSAGE_SEND_FAIL,
							message: t && t.message ? t.message : vd,
							data: {
								message: e
							}
						}))
				}
			}, {
				key: "_getSendMessageSpecifiedKey",
				value: function(e) {
					if ([Zn.MSG_IMAGE, Zn.MSG_AUDIO, Zn.MSG_VIDEO, Zn.MSG_FILE].includes(e
						.type)) return Tp;
					if (e.conversationType === Zn.CONV_C2C) return yp;
					if (e.conversationType === Zn.CONV_GROUP) {
						var t = this.getModule(qu).getLocalGroupProfile(e.to);
						if (!t) return;
						var n = t.type;
						return dc(n) ? Sp : Ip
					}
				}
			}, {
				key: "_addSendMessageTotalCount",
				value: function(e) {
					var t = this._getSendMessageSpecifiedKey(e);
					t && this.getModule(nl).addTotalCount(t)
				}
			}, {
				key: "_addSendMessageSuccessCount",
				value: function(e, t) {
					var n = Math.abs(Date.now() - t),
						o = this._getSendMessageSpecifiedKey(e);
					if (o) {
						var r = this.getModule(nl);
						r.addSuccessCount(o), r.addCost(o, n)
					}
				}
			}, {
				key: "_addSendMessageFailCountOnUser",
				value: function(e, t) {
					var n, o, r = t.code,
						a = void 0 === r ? -1 : r,
						s = this.getModule(nl),
						i = this._getSendMessageSpecifiedKey(e);
					i === Tp && (n = a, o = !1, rv.includes(n) && (o = !0), o) ? s
						.addFailedCountOfUserSide(Ep) : function(e) {
							var t = !1;
							return Object.values(ov).includes(e) && (t = !0), (e >= 120001 &&
								e <= 13e4 || e >= 10100 && e <= 10200) && (t = !0), t
						}(a) && i && s.addFailedCountOfUserSide(i)
				}
			}, {
				key: "resendMessage",
				value: function(e) {
					return e.isResend = !0, e.status = mu.UNSEND, this.sendMessageInstance(e)
				}
			}, {
				key: "revokeMessage",
				value: function(e) {
					var t = this,
						n = null;
					if (e.conversationType === Zn.CONV_C2C) {
						if (!(n = this.getModule(Fu))) return this._onCannotFindModule()
					} else if (e.conversationType === Zn.CONV_GROUP && !(n = this.getModule(
						qu))) return this._onCannotFindModule();
					var o = new Lp(zp);
					return o.setMessage("tjg_id:".concat(this.generateTjgID(e), " type:")
							.concat(e.type, " from:").concat(e.from, " to:").concat(e.to)), n
						.revokeMessage(e).then((function(n) {
							var r = n.data.recallRetList;
							if (!Tc(r) && 0 !== r[0].retCode) {
								var a = new G_({
									code: r[0].retCode,
									message: P_[r[0].retCode] || Td,
									data: {
										message: e
									}
								});
								return o.setCode(a.code).setMoreMessage(a.message)
								.end(), x_(a)
							}
							return Gi.info("".concat(t._className,
									".revokeMessage ok. ID:").concat(e.ID)), e
								.isRevoked = !0, o.end(), t.getModule(Ku)
								.onMessageRevoked([e]), O_({
									message: e
								})
						})).catch((function(n) {
							t.probeNetwork().then((function(e) {
								var t = m(e, 2),
									r = t[0],
									a = t[1];
								o.setError(n, r, a).end()
							}));
							var r = new G_({
								code: n && n.code ? n.code : cd
									.MESSAGE_REVOKE_FAIL,
								message: n && n.message ? n.message : Td,
								data: {
									message: e
								}
							});
							return Gi.warn("".concat(t._className,
								".revokeMessage failed. error:"), n), x_(r)
						}))
				}
			}, {
				key: "deleteMessage",
				value: function(e) {
					var t = this,
						n = null,
						o = e[0],
						r = o.conversationID,
						a = "",
						s = [],
						i = [];
					if (o.conversationType === Zn.CONV_C2C ? (n = this.getModule(Fu), a = r
							.replace(Zn.CONV_C2C, ""), e.forEach((function(e) {
								e && e.status === mu.SUCCESS && e.conversationID ===
									r && (e.getOnlineOnlyFlag() || s.push("".concat(e
											.sequence, "_").concat(e.random, "_")
										.concat(e.time)), i.push(e))
							}))) : o.conversationType === Zn.CONV_GROUP && (n = this.getModule(
							qu), a = r.replace(Zn.CONV_GROUP, ""), e.forEach((function(e) {
							e && e.status === mu.SUCCESS && e.conversationID ===
								r && (e.getOnlineOnlyFlag() || s.push("".concat(e
									.sequence)), i.push(e))
						}))), !n) return this._onCannotFindModule();
					if (0 === s.length) return this._onMessageDeleted(i);
					s.length > 30 && (s = s.slice(0, 30), i = i.slice(0, 30));
					var c = new Lp(Wp);
					return c.setMessage("to:".concat(a, " count:").concat(s.length)), n
						.deleteMessage({
							to: a,
							keyList: s
						}).then((function(e) {
							return c.end(), Gi.info("".concat(t._className,
								".deleteMessage ok")), t._onMessageDeleted(i)
						})).catch((function(e) {
							t.probeNetwork().then((function(t) {
								var n = m(t, 2),
									o = n[0],
									r = n[1];
								c.setError(e, o, r).end()
							})), Gi.warn("".concat(t._className,
								".deleteMessage failed. error:"), e);
							var n = new G_({
								code: e && e.code ? e.code : cd
									.MESSAGE_DELETE_FAIL,
								message: e && e.message ? e.message : Ed
							});
							return x_(n)
						}))
				}
			}, {
				key: "_onMessageDeleted",
				value: function(e) {
					return this.getModule(Ku).onMessageDeleted(e), q_({
						messageList: e
					})
				}
			}, {
				key: "_generateUUID",
				value: function() {
					var e = this.getModule(Bu);
					return "".concat(e.getSDKAppID(), "-").concat(e.getUserID(), "-").concat(
						function() {
							for (var e = "", t = 32; t > 0; --t) e += nc[Math.floor(Math
								.random() * oc)];
							return e
						}())
				}
			}, {
				key: "getMessageOptionByID",
				value: function(e) {
					return this._messageOptionsMap.get(e)
				}
			}, {
				key: "_getNickAndAvatarByUserID",
				value: function(e) {
					return this.getModule(Uu).getNickAndAvatarByUserID(e)
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._messageOptionsMap
					.clear()
				}
			}]), n
		}(ol),
		sv = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "PluginModule", r.plugins = {}, r
			}
			return a(n, [{
				key: "registerPlugin",
				value: function(e) {
					var t = this;
					Object.keys(e).forEach((function(n) {
						t.plugins[n] = e[n]
					})), new Lp(Up).setMessage("key=".concat(Object.keys(e))).end()
				}
			}, {
				key: "getPlugin",
				value: function(e) {
					return this.plugins[e]
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset"))
				}
			}]), n
		}(ol),
		iv = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "SyncUnreadMessageModule", r._cookie = "",
					r._onlineSyncFlag = !1, r.getInnerEmitterInstance().on(im.CONTEXT_A2KEY_AND_TINYID_UPDATED,
						r._onLoginSuccess, h(r)), r
			}
			return a(n, [{
				key: "_onLoginSuccess",
				value: function(e) {
					this._startSync({
						cookie: this._cookie,
						syncFlag: 0,
						isOnlineSync: 0
					})
				}
			}, {
				key: "_startSync",
				value: function(e) {
					var t = this,
						n = e.cookie,
						o = e.syncFlag,
						r = e.isOnlineSync;
					Gi.log("".concat(this._className, "._startSync cookie:").concat(n,
						" syncFlag:").concat(o, " isOnlineSync:").concat(r)), this.request({
						protocolName: il,
						requestData: {
							cookie: n,
							syncFlag: o,
							isOnlineSync: r
						}
					}).then((function(e) {
						var n = e.data,
							o = n.cookie,
							r = n.syncFlag,
							a = n.eventArray,
							s = n.messageList,
							i = n.C2CRemainingUnreadList;
						if (t._cookie = o, Tc(o));
						else if (0 === r || 1 === r) {
							if (a) t.getModule(Xu).onMessage({
								head: {},
								body: {
									eventArray: a,
									isInstantMessage: t._onlineSyncFlag,
									isSyncingEnded: !1
								}
							});
							t.getModule(Fu).onNewC2CMessage({
								dataList: s,
								isInstantMessage: !1,
								C2CRemainingUnreadList: i
							}), t._startSync({
								cookie: o,
								syncFlag: r,
								isOnlineSync: 0
							})
						} else if (2 === r) {
							if (a) t.getModule(Xu).onMessage({
								head: {},
								body: {
									eventArray: a,
									isInstantMessage: t._onlineSyncFlag,
									isSyncingEnded: !0
								}
							});
							t.getModule(Fu).onNewC2CMessage({
								dataList: s,
								isInstantMessage: t._onlineSyncFlag,
								C2CRemainingUnreadList: i
							})
						}
					})).catch((function(e) {
						Gi.error("".concat(t._className,
							"._startSync failed. error:"), e)
					}))
				}
			}, {
				key: "startOnlineSync",
				value: function() {
					Gi.log("".concat(this._className, ".startOnlineSync")), this
						._onlineSyncFlag = !0, this._startSync({
							cookie: this._cookie,
							syncFlag: 0,
							isOnlineSync: 1
						})
				}
			}, {
				key: "startSyncOnReconnected",
				value: function() {
					Gi.log("".concat(this._className, ".startSyncOnReconnected.")), this
						._onlineSyncFlag = !0, this._startSync({
							cookie: this._cookie,
							syncFlag: 0,
							isOnlineSync: 0
						})
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._onlineSyncFlag = !1,
						this._cookie = ""
				}
			}]), n
		}(ol),
		cv = {
			request: {
				toAccount: "To_Account",
				fromAccount: "From_Account",
				to: "To_Account",
				from: "From_Account",
				groupID: "GroupId",
				groupAtUserID: "GroupAt_Account",
				extension: "Ext",
				data: "Data",
				description: "Desc",
				elements: "MsgBody",
				sizeType: "Type",
				downloadFlag: "Download_Flag",
				thumbUUID: "ThumbUUID",
				videoUUID: "VideoUUID",
				remoteAudioUrl: "Url",
				remoteVideoUrl: "VideoUrl",
				videoUrl: "",
				imageUrl: "URL",
				fileUrl: "Url",
				uuid: "UUID",
				priority: "MsgPriority",
				receiverUserID: "To_Account",
				receiverGroupID: "GroupId",
				messageSender: "SenderId",
				messageReceiver: "ReceiverId",
				nick: "From_AccountNick",
				avatar: "From_AccountHeadurl",
				messageNumber: "MsgNum",
				pbDownloadKey: "PbMsgKey",
				downloadKey: "JsonMsgKey",
				applicationType: "PendencyType",
				userIDList: "To_Account",
				groupNameList: "GroupName",
				userID: "To_Account"
			},
			response: {
				MsgPriority: "priority",
				ThumbUUID: "thumbUUID",
				VideoUUID: "videoUUID",
				Download_Flag: "downloadFlag",
				GroupId: "groupID",
				Member_Account: "userID",
				MsgList: "messageList",
				SyncFlag: "syncFlag",
				To_Account: "to",
				From_Account: "from",
				MsgSeq: "sequence",
				MsgRandom: "random",
				MsgTime: "time",
				MsgTimeStamp: "time",
				MsgContent: "content",
				MsgBody: "elements",
				From_AccountNick: "nick",
				From_AccountHeadurl: "avatar",
				GroupWithdrawInfoArray: "revokedInfos",
				GroupReadInfoArray: "groupMessageReadNotice",
				LastReadMsgSeq: "lastMessageSeq",
				WithdrawC2cMsgNotify: "c2cMessageRevokedNotify",
				C2cWithdrawInfoArray: "revokedInfos",
				C2cReadedReceipt: "c2cMessageReadReceipt",
				ReadC2cMsgNotify: "c2cMessageReadNotice",
				LastReadTime: "peerReadTime",
				MsgRand: "random",
				MsgType: "type",
				MsgShow: "messageShow",
				NextMsgSeq: "nextMessageSeq",
				FaceUrl: "avatar",
				ProfileDataMod: "profileModify",
				Profile_Account: "userID",
				ValueBytes: "value",
				ValueNum: "value",
				NoticeSeq: "noticeSequence",
				NotifySeq: "notifySequence",
				MsgFrom_AccountExtraInfo: "messageFromAccountExtraInformation",
				Operator_Account: "operatorID",
				OpType: "operationType",
				ReportType: "operationType",
				UserId: "userID",
				User_Account: "userID",
				List_Account: "userIDList",
				MsgOperatorMemberExtraInfo: "operatorInfo",
				MsgMemberExtraInfo: "memberInfoList",
				ImageUrl: "avatar",
				NickName: "nick",
				MsgGroupNewInfo: "newGroupProfile",
				MsgAppDefinedData: "groupCustomField",
				Owner_Account: "ownerID",
				GroupFaceUrl: "avatar",
				GroupIntroduction: "introduction",
				GroupNotification: "notification",
				GroupApplyJoinOption: "joinOption",
				MsgKey: "messageKey",
				GroupInfo: "groupProfile",
				ShutupTime: "muteTime",
				Desc: "description",
				Ext: "extension",
				GroupAt_Account: "groupAtUserID",
				MsgNum: "messageNumber",
				PbMsgKey: "pbDownloadKey",
				JsonMsgKey: "downloadKey",
				MsgModifiedFlag: "isModified",
				PendencyItem: "applicationItem",
				PendencyType: "applicationType",
				AddTime: "time",
				AddSource: "source",
				AddWording: "wording",
				ProfileImImage: "avatar",
				PendencyAdd: "friendApplicationAdded",
				FrienPencydDel_Account: "friendApplicationDeletedUserIDList"
			},
			ignoreKeyWord: ["C2C", "ID", "USP"]
		},
		uv = ct.trim;

	function lv(e, t) {
		if ("string" != typeof e && !Array.isArray(e)) throw new TypeError(
			"Expected the input to be `string | string[]`");
		t = Object.assign({
			pascalCase: !1
		}, t);
		var n;
		return 0 === (e = Array.isArray(e) ? e.map((function(e) {
				return e.trim()
			})).filter((function(e) {
				return e.length
			})).join("-") : e.trim()).length ? "" : 1 === e.length ? t.pascalCase ? e.toUpperCase() : e
			.toLowerCase() : (e !== e.toLowerCase() && (e = dv(e)), e = e.replace(/^[_.\- ]+/, "").toLowerCase()
				.replace(/[_.\- ]+(\w|$)/g, (function(e, t) {
					return t.toUpperCase()
				})).replace(/\d+(\w|$)/g, (function(e) {
					return e.toUpperCase()
				})), n = e, t.pascalCase ? n.charAt(0).toUpperCase() + n.slice(1) : n)
	}
	nt({
		target: "String",
		proto: !0,
		forced: function(e) {
			return A((function() {
				return !!ot[e]() || "​᠎" != "​᠎" [e]() || ot[e].name !== e
			}))
		}("trim")
	}, {
		trim: function() {
			return uv(this)
		}
	});
	var dv = function(e) {
		for (var t = !1, n = !1, o = !1, r = 0; r < e.length; r++) {
			var a = e[r];
			t && /[a-zA-Z]/.test(a) && a.toUpperCase() === a ? (e = e.slice(0, r) + "-" + e.slice(r), t = !
				1, o = n, n = !0, r++) : n && o && /[a-zA-Z]/.test(a) && a.toLowerCase() === a ? (e = e
				.slice(0, r - 1) + "-" + e.slice(r - 1), o = n, n = !1, t = !0) : (t = a
			.toLowerCase() === a && a.toUpperCase() !== a, o = n, n = a.toUpperCase() === a && a
				.toLowerCase() !== a)
		}
		return e
	};

	function pv(e, t) {
		var n = 0;
		return function e(t, o) {
			if (++n > 100) return n--, t;
			if (Bi(t)) {
				var r = t.map((function(t) {
					return Vi(t) ? e(t, o) : t
				}));
				return n--, r
			}
			if (Vi(t)) {
				var a = (s = t, i = function(e, t) {
					if (!Wi(t)) return !1;
					if ((r = t) !== lv(r))
						for (var n = 0; n < cv.ignoreKeyWord.length && !t.includes(cv.ignoreKeyWord[
								n]); n++);
					var r;
					return ji(o[t]) ? function(e) {
						return "OPPOChannelID" === e ? e : e[0].toUpperCase() + lv(e).slice(1)
					}(t) : o[t]
				}, c = Object.create(null), Object.keys(s).forEach((function(e) {
					var t = i(s[e], e);
					t && (c[t] = s[e])
				})), c);
				return a = gc(a, (function(t, n) {
					return Bi(t) || Vi(t) ? e(t, o) : t
				})), n--, a
			}
			var s, i, c
		}(e, t)
	}

	function gv(e, t) {
		if (Bi(e)) return e.map((function(e) {
			return Vi(e) ? gv(e, t) : e
		}));
		if (Vi(e)) {
			var n = (o = e, r = function(e, n) {
				return ji(t[n]) ? lv(n) : t[n]
			}, a = {}, Object.keys(o).forEach((function(e) {
				a[r(o[e], e)] = o[e]
			})), a);
			return n = gc(n, (function(e) {
				return Bi(e) || Vi(e) ? gv(e, t) : e
			}))
		}
		var o, r, a
	}
	var hv = function() {
			function e(t) {
				o(this, e), this._handler = t;
				var n = t.getURL();
				this._socket = null, this._id = tc(), Zs ? Xs ? (ti.connectSocket({
						url: n,
						header: {
							"content-type": "application/json"
						}
					}), ti.onSocketClose(this._onClose.bind(this)), ti.onSocketOpen(this._onOpen.bind(
					this)), ti.onSocketMessage(this._onMessage.bind(this)), ti.onSocketError(this._onError
						.bind(this))) : (this._socket = ti.connectSocket({
						url: n,
						header: {
							"content-type": "application/json"
						},
						complete: function() {}
					}), this._socket.onClose(this._onClose.bind(this)), this._socket.onOpen(this._onOpen
						.bind(this)), this._socket.onMessage(this._onMessage.bind(this)), this._socket
					.onError(this._onError.bind(this))) : ei && (this._socket = new WebSocket(n), this
					._socket.onopen = this._onOpen.bind(this), this._socket.onmessage = this._onMessage
					.bind(this), this._socket.onclose = this._onClose.bind(this), this._socket.onerror =
					this._onError.bind(this))
			}
			return a(e, [{
				key: "getID",
				value: function() {
					return this._id
				}
			}, {
				key: "_onOpen",
				value: function() {
					this._handler.onOpen({
						id: this._id
					})
				}
			}, {
				key: "_onClose",
				value: function(e) {
					this._handler.onClose({
						id: this._id,
						e: e
					})
				}
			}, {
				key: "_onMessage",
				value: function(e) {
					this._handler.onMessage(e)
				}
			}, {
				key: "_onError",
				value: function(e) {
					this._handler.onError({
						id: this._id,
						e: e
					})
				}
			}, {
				key: "close",
				value: function(e) {
					if (Xs) return ti.offSocketClose(), ti.offSocketMessage(), ti
					.offSocketOpen(), ti.offSocketError(), void ti.closeSocket();
					this._socket && (Zs ? (this._socket.onClose((function() {})), this._socket
							.onOpen((function() {})), this._socket.onMessage((
							function() {})), this._socket.onError((function() {}))) : ei &&
						(this._socket.onopen = null, this._socket.onmessage = null, this
							._socket.onclose = null, this._socket.onerror = null), Js ? this
						._socket.close({
							code: e
						}) : this._socket.close(e), this._socket = null)
				}
			}, {
				key: "send",
				value: function(e) {
					Xs ? ti.sendSocketMessage({
						data: e.data,
						fail: function() {
							e.fail && e.requestID && e.fail(e.requestID)
						}
					}) : this._socket && (Zs ? this._socket.send({
						data: e.data,
						fail: function() {
							e.fail && e.requestID && e.fail(e.requestID)
						}
					}) : ei && this._socket.send(e.data))
				}
			}]), e
		}(),
		fv = 4e3,
		_v = 4001,
		mv = ["keyMap"],
		vv = ["keyMap"],
		Mv = "connected",
		yv = "connecting",
		Iv = "disconnected",
		Sv = function() {
			function e(t) {
				o(this, e), this._channelModule = t, this._className = "SocketHandler", this._promiseMap =
					new Map, this._readyState = Iv, this._simpleRequestMap = new Map, this.MAX_SIZE = 100, this
					._startSequence = tc(), this._startTs = 0, this._reConnectFlag = !1, this._nextPingTs = 0,
					this._reConnectCount = 0, this.MAX_RECONNECT_COUNT = 3, this._socketID = -1, this._random =
					0, this._socket = null, this._url = "", this._onOpenTs = 0, this._setOverseaHost(), this
					._initConnection()
			}
			return a(e, [{
				key: "_setOverseaHost",
				value: function() {
					this._channelModule.isOversea() && Bs.HOST.setCurrent(Ks)
				}
			}, {
				key: "_initConnection",
				value: function() {
					"" === this._url ? this._url = Bs.HOST.CURRENT.DEFAULT : this._url === Bs
						.HOST.CURRENT.DEFAULT ? this._url = Bs.HOST.CURRENT.BACKUP : this
						._url === Bs.HOST.CURRENT.BACKUP && (this._url = Bs.HOST.CURRENT
							.DEFAULT), this._connect(), this._nextPingTs = 0
				}
			}, {
				key: "onCheckTimer",
				value: function(e) {
					e % 1 == 0 && this._checkPromiseMap()
				}
			}, {
				key: "_checkPromiseMap",
				value: function() {
					var e = this;
					0 !== this._promiseMap.size && this._promiseMap.forEach((function(t, n) {
						var o = t.reject,
							r = t.timestamp;
						Date.now() - r >= 15e3 && (Gi.log("".concat(e._className,
							"._checkPromiseMap request timeout, delete requestID:"
							).concat(n)), e._promiseMap.delete(n), o(
					new G_({
							code: cd.NETWORK_TIMEOUT,
							message: dp
						})), e._channelModule.onRequestTimeout(n))
					}))
				}
			}, {
				key: "onOpen",
				value: function(e) {
					this._onOpenTs = Date.now();
					var t = e.id;
					this._socketID = t, new Lp(qp).setMessage(n).setMessage("socketID:".concat(
						t)).end();
					var n = Date.now() - this._startTs;
					Gi.log("".concat(this._className, "._onOpen cost ").concat(n,
						" ms. socketID:").concat(t)), e.id === this._socketID && (this
						._readyState = Mv, this._reConnectCount = 0, this._resend(), !0 ===
						this._reConnectFlag && (this._channelModule.onReconnected(), this
							._reConnectFlag = !1), this._channelModule.onOpen())
				}
			}, {
				key: "onClose",
				value: function(e) {
					var t = new Lp(xp),
						n = e.id,
						o = e.e,
						r = "sourceSocketID:".concat(n, " currentSocketID:").concat(this
							._socketID),
						a = 0;
					0 !== this._onOpenTs && (a = Date.now() - this._onOpenTs), t.setMessage(a)
						.setMoreMessage(r).setCode(o.code).end(), Gi.log("".concat(this
								._className, "._onClose code:").concat(o.code, " reason:")
							.concat(o.reason, " ").concat(r, " onlineTime:").concat(a)), n ===
						this._socketID && (this._readyState = Iv, a < 1e3 ? this._channelModule
							.onReconnectFailed() : this._channelModule.onClose())
				}
			}, {
				key: "onError",
				value: function(e) {
					var t = e.id,
						n = e.e,
						o = "sourceSocketID:".concat(t, " currentSocketID:").concat(this
							._socketID);
					new Lp(Vp).setMessage(n.errMsg || Zi(n)).setMoreMessage(o).setLevel("error")
						.end(), Gi.warn("".concat(this._className, "._onError"), n, o), t ===
						this._socketID && (this._readyState = "", this._channelModule.onError())
				}
			}, {
				key: "onMessage",
				value: function(e) {
					var t;
					try {
						t = JSON.parse(e.data)
					} catch (Hv) {
						new Lp(ng).setMessage(e.data).end()
					}
					if (t && t.head) {
						var n = this._getRequestIDFromHead(t.head),
							o = vc(t.head),
							r = gv(t.body, this._getResponseKeyMap(o));
						if (Gi.debug("".concat(this._className, ".onMessage ret:").concat(JSON
								.stringify(r), " requestID:").concat(n, " has:").concat(this
								._promiseMap.has(n))), this._setNextPingTs(), this._promiseMap
							.has(n)) {
							var a = this._promiseMap.get(n),
								s = a.resolve,
								i = a.reject,
								c = a.timestamp;
							return this._promiseMap.delete(n), this._calcRTT(c), void(r
								.errorCode && 0 !== r.errorCode ? (this._channelModule
									.onErrorCodeNotZero(r), i(new G_({
										code: r.errorCode,
										message: r.errorInfo || ""
									}))) : s(O_(r)))
						}
						this._channelModule.onMessage({
							head: t.head,
							body: r
						})
					}
				}
			}, {
				key: "_calcRTT",
				value: function(e) {
					var t = Date.now() - e;
					this._channelModule.getModule(nl).addRTT(t)
				}
			}, {
				key: "_connect",
				value: function() {
					new Lp(Fp).setMessage("url:".concat(this.getURL())).end(), Gi.log("".concat(
							this._className, "._connect url:").concat(this.getURL())), this
						._startTs = Date.now(), this._socket = new hv(this), this._socketID =
						this._socket.getID(), this._readyState = yv
				}
			}, {
				key: "getURL",
				value: function() {
					var e = this._channelModule.getModule(Bu);
					return "".concat(this._url, "/info?sdkappid=").concat(e.getSDKAppID(),
						"&instanceid=").concat(e.getInstanceID(), "&random=").concat(this
						._getRandom())
				}
			}, {
				key: "_closeConnection",
				value: function(e) {
					Gi.log("".concat(this._className, "._closeConnection")), this._socket && (
						this._socket.close(e), this._socketID = -1, this._socket = null,
						this._readyState = Iv)
				}
			}, {
				key: "_resend",
				value: function() {
					var e = this;
					if (Gi.log("".concat(this._className, "._resend reConnectFlag:").concat(this
							._reConnectFlag), "promiseMap.size:".concat(this._promiseMap
							.size, " simpleRequestMap.size:").concat(this._simpleRequestMap
							.size)), this._promiseMap.size > 0 && this._promiseMap.forEach((
							function(t, n) {
								var o = t.uplinkData,
									r = t.resolve,
									a = t.reject;
								e._promiseMap.set(n, {
									resolve: r,
									reject: a,
									timestamp: Date.now(),
									uplinkData: o
								}), e._execute(n, o)
							})), this._simpleRequestMap.size > 0) {
						var t, n = E(this._simpleRequestMap);
						try {
							for (n.s(); !(t = n.n()).done;) {
								var o = m(t.value, 2),
									r = o[0],
									a = o[1];
								this._execute(r, a)
							}
						} catch (s) {
							n.e(s)
						} finally {
							n.f()
						}
						this._simpleRequestMap.clear()
					}
				}
			}, {
				key: "send",
				value: function(e) {
					var t = this;
					e.head.seq = this._getSequence(), e.head.reqtime = Math.floor(Date.now() /
						1e3);
					e.keyMap;
					var n = g(e, mv),
						o = this._getRequestIDFromHead(e.head),
						r = JSON.stringify(n);
					return new Promise((function(e, a) {
						(t._promiseMap.set(o, {
							resolve: e,
							reject: a,
							timestamp: Date.now(),
							uplinkData: r
						}), Gi.debug("".concat(t._className,
							".send uplinkData:").concat(JSON.stringify(n),
							" requestID:").concat(o, " readyState:").concat(
							t._readyState)), t._readyState !== Mv) ? t._reConnect():
							(t._execute(o, r), t._channelModule.getModule(nl)
								.addRequestCount())
					}))
				}
			}, {
				key: "simplySend",
				value: function(e) {
					e.head.seq = this._getSequence(), e.head.reqtime = Math.floor(Date.now() /
						1e3);
					e.keyMap;
					var t = g(e, vv),
						n = this._getRequestIDFromHead(e.head),
						o = JSON.stringify(t);
					this._readyState !== Mv ? (this._simpleRequestMap.size < this.MAX_SIZE ?
						this._simpleRequestMap.set(n, o) : Gi.log("".concat(this._className,
							".simplySend. simpleRequestMap is full, drop request!")), this
						._reConnect()) : this._execute(n, o)
				}
			}, {
				key: "_execute",
				value: function(e, t) {
					this._socket.send({
						data: t,
						fail: Zs ? this._onSendFail.bind(this) : void 0,
						requestID: e
					})
				}
			}, {
				key: "_onSendFail",
				value: function(e) {
					Gi.log("".concat(this._className, "._onSendFail requestID:").concat(e))
				}
			}, {
				key: "_getSequence",
				value: function() {
					var e;
					if (this._startSequence < 2415919103) return e = this._startSequence, this
						._startSequence += 1, 2415919103 === this._startSequence && (this
							._startSequence = tc()), e
				}
			}, {
				key: "_getRequestIDFromHead",
				value: function(e) {
					return e.servcmd + e.seq
				}
			}, {
				key: "_getResponseKeyMap",
				value: function(e) {
					var n = this._channelModule.getKeyMap(e);
					return t(t({}, cv.response), n.response)
				}
			}, {
				key: "_reConnect",
				value: function() {
					this._readyState !== Mv && this._readyState !== yv && this.forcedReconnect()
				}
			}, {
				key: "forcedReconnect",
				value: function() {
					var e = this;
					Gi.log("".concat(this._className, ".forcedReconnect count:").concat(this
							._reConnectCount, " readyState:").concat(this._readyState)), this
						._reConnectFlag = !0, this._resetRandom(), this._reConnectCount < this
						.MAX_RECONNECT_COUNT ? (this._reConnectCount += 1, this
							._closeConnection(_v), this._initConnection()) : this._channelModule
						.probeNetwork().then((function(t) {
							var n = m(t, 2),
								o = n[0];
							n[1];
							o ? (Gi.warn("".concat(e._className,
									".forcedReconnect disconnected from wsserver but network is ok, continue..."
									)), e._reConnectCount = 0, e._closeConnection(
									_v), e._initConnection()) : e._channelModule
								.onReconnectFailed()
						}))
				}
			}, {
				key: "getReconnectFlag",
				value: function() {
					return this._reConnectFlag
				}
			}, {
				key: "_setNextPingTs",
				value: function() {
					this._nextPingTs = Date.now() + 1e4
				}
			}, {
				key: "getNextPingTs",
				value: function() {
					return this._nextPingTs
				}
			}, {
				key: "isConnected",
				value: function() {
					return this._readyState === Mv
				}
			}, {
				key: "_getRandom",
				value: function() {
					return 0 === this._random && (this._random = Math.random()), this._random
				}
			}, {
				key: "_resetRandom",
				value: function() {
					this._random = 0
				}
			}, {
				key: "close",
				value: function() {
					Gi.log("".concat(this._className, ".close")), this._closeConnection(fv),
						this._promiseMap.clear(), this._startSequence = tc(), this._readyState =
						Iv, this._simpleRequestMap.clear(), this._reConnectFlag = !1, this
						._reConnectCount = 0, this._onOpenTs = 0, this._url = "", this._random =
						0
				}
			}]), e
		}(),
		Tv = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				if (o(this, n), (r = t.call(this, e))._className = "ChannelModule", r._socketHandler = new Sv(h(
						r)), r._probing = !1, r._isAppShowing = !0, r._previousState = Zn.NET_STATE_CONNECTED,
					Zs && "function" == typeof ti.onAppShow && "function" == typeof ti.onAppHide) {
					var a = r._onAppHide.bind(h(r)),
						s = r._onAppShow.bind(h(r));
					"function" == typeof ti.offAppHide && ti.offAppHide(a), "function" == typeof ti
						.offAppShow && ti.offAppShow(s), ti.onAppHide(a), ti.onAppShow(s)
				}
				return r._timerForNotLoggedIn = -1, r._timerForNotLoggedIn = setInterval(r.onCheckTimer.bind(h(
					r)), 1e3), r._fatalErrorFlag = !1, r
			}
			return a(n, [{
				key: "onCheckTimer",
				value: function(e) {
					this._socketHandler && (this.isLoggedIn() ? (this._timerForNotLoggedIn >
							0 && (clearInterval(this._timerForNotLoggedIn), this
								._timerForNotLoggedIn = -1), this._socketHandler
							.onCheckTimer(e)) : this._socketHandler.onCheckTimer(1), this
						._checkNextPing())
				}
			}, {
				key: "onErrorCodeNotZero",
				value: function(e) {
					this.getModule(Xu).onErrorCodeNotZero(e)
				}
			}, {
				key: "onMessage",
				value: function(e) {
					this.getModule(Xu).onMessage(e)
				}
			}, {
				key: "send",
				value: function(e) {
					return this._socketHandler ? this._previousState !== Zn
						.NET_STATE_CONNECTED && e.head.servcmd.includes(Zl) ? this
						._sendLogViaHTTP(e) : this._socketHandler.send(e) : Promise.reject()
				}
			}, {
				key: "_sendLogViaHTTP",
				value: function(e) {
					return new Promise((function(t, n) {
						var o =
							"https://webim.tim.qq.com/v4/imopenstat/tim_web_report_v2?sdkappid="
							.concat(e.head.sdkappid, "&reqtime=").concat(Date
						.now()),
							r = JSON.stringify(e.body),
							a = "application/x-www-form-urlencoded;charset=UTF-8";
						if (Zs) ti.request({
							url: o,
							data: r,
							method: "POST",
							timeout: 3e3,
							header: {
								"content-type": a
							},
							success: function() {
								t()
							},
							fail: function() {
								n(new G_({
									code: cd.NETWORK_ERROR,
									message: lp
								}))
							}
						});
						else {
							var s = new XMLHttpRequest,
								i = setTimeout((function() {
									s.abort(), n(new G_({
										code: cd
											.NETWORK_TIMEOUT,
										message: dp
									}))
								}), 3e3);
							s.onreadystatechange = function() {
								4 === s.readyState && (clearTimeout(i), 200 ===
									s.status || 304 === s.status ? t() : n(
										new G_({
											code: cd.NETWORK_ERROR,
											message: lp
										})))
							}, s.open("POST", o, !0), s.setRequestHeader(
								"Content-type", a), s.send(r)
						}
					}))
				}
			}, {
				key: "simplySend",
				value: function(e) {
					return this._socketHandler ? this._socketHandler.simplySend(e) : Promise
						.reject()
				}
			}, {
				key: "onOpen",
				value: function() {
					this._ping()
				}
			}, {
				key: "onClose",
				value: function() {
					this.reConnect()
				}
			}, {
				key: "onError",
				value: function() {
					Zs && Gi.error("".concat(this._className,
						".onError 从v2.11.2起，SDK 支持了 WebSocket，如您未添加相关受信域名，请先添加！升级指引: https://web.sdk.qcloud.com/im/doc/zh-cn/tutorial-02-upgradeguideline.html"
						))
				}
			}, {
				key: "getKeyMap",
				value: function(e) {
					return this.getModule(Xu).getKeyMap(e)
				}
			}, {
				key: "_onAppHide",
				value: function() {
					this._isAppShowing = !1
				}
			}, {
				key: "_onAppShow",
				value: function() {
					this._isAppShowing = !0
				}
			}, {
				key: "onRequestTimeout",
				value: function(e) {}
			}, {
				key: "onReconnected",
				value: function() {
					Gi.log("".concat(this._className, ".onReconnected")), this.getModule(Xu)
						.onReconnected(), this._emitNetStateChangeEvent(Zn.NET_STATE_CONNECTED)
				}
			}, {
				key: "onReconnectFailed",
				value: function() {
					Gi.log("".concat(this._className, ".onReconnectFailed")), this
						._emitNetStateChangeEvent(Zn.NET_STATE_DISCONNECTED)
				}
			}, {
				key: "reConnect",
				value: function() {
					if (!this._fatalErrorFlag && this._socketHandler) {
						var e = this._socketHandler.getReconnectFlag();
						if (Gi.log("".concat(this._className, ".reConnect previousState:")
								.concat(this._previousState, " reconnectFlag:").concat(e)), this
							._previousState === Zn.NET_STATE_CONNECTING && e) return;
						this._socketHandler.forcedReconnect(), this._emitNetStateChangeEvent(Zn
							.NET_STATE_CONNECTING)
					}
				}
			}, {
				key: "_emitNetStateChangeEvent",
				value: function(e) {
					this._previousState !== e && (this._previousState = e, this.emitOuterEvent(
						Qn.NET_STATE_CHANGE, {
							state: e
						}))
				}
			}, {
				key: "_ping",
				value: function() {
					var e = this;
					if (!0 !== this._probing) {
						this._probing = !0;
						var t = this.getModule(Xu).getProtocolData({
							protocolName: ed
						});
						this.send(t).then((function() {
							e._probing = !1
						})).catch((function(t) {
							if (Gi.warn("".concat(e._className,
									"._ping failed. error:"), t), e._probing = !1,
								t && 60002 === t.code) return new Lp(Yg).setMessage(
									"code:".concat(t.code, " message:").concat(t
										.message)).setNetworkType(e.getModule(
									$u).getNetworkType()).end(), e
								._fatalErrorFlag = !0, void e.emitOuterEvent(Qn
									.NET_STATE_CHANGE, Zn.NET_STATE_DISCONNECTED
									);
							e.probeNetwork().then((function(t) {
								var n = m(t, 2),
									o = n[0],
									r = n[1];
								Gi.log("".concat(e._className,
										"._ping failed. isAppShowing:"
										).concat(e._isAppShowing,
										" online:").concat(o,
										" networkType:").concat(r)), o ?
									e.reConnect() : e.emitOuterEvent(Qn
										.NET_STATE_CHANGE, Zn
										.NET_STATE_DISCONNECTED)
							}))
						}))
					}
				}
			}, {
				key: "_checkNextPing",
				value: function() {
					this._socketHandler && (this._socketHandler.isConnected() && Date.now() >=
						this._socketHandler.getNextPingTs() && this._ping())
				}
			}, {
				key: "dealloc",
				value: function() {
					this._socketHandler && (this._socketHandler.close(), this._socketHandler =
						null), this._timerForNotLoggedIn > -1 && clearInterval(this
						._timerForNotLoggedIn)
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._previousState = Zn
						.NET_STATE_CONNECTED, this._probing = !1, this._fatalErrorFlag = !1,
						this._timerForNotLoggedIn = setInterval(this.onCheckTimer.bind(this),
							1e3)
				}
			}]), n
		}(ol),
		Ev = ["a2", "tinyid"],
		Dv = ["a2", "tinyid"],
		kv = function() {
			function e(t) {
				o(this, e), this._className = "ProtocolHandler", this._sessionModule = t, this._configMap =
					new Map, this._fillConfigMap()
			}
			return a(e, [{
				key: "_fillConfigMap",
				value: function() {
					this._configMap.clear();
					var e = this._sessionModule.genCommonHead(),
						n = this._sessionModule.genCosSpecifiedHead(),
						o = this._sessionModule.genSSOReportHead();
					this._configMap.set(rl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_OPEN_STATUS, ".")
									.concat(Bs.CMD.LOGIN)
							}),
							body: {
								state: "Online"
							},
							keyMap: {
								response: {
									TinyId: "tinyID",
									InstId: "instanceID",
									HelloInterval: "helloInterval"
								}
							}
						}
					}(e)), this._configMap.set(al, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_OPEN_STATUS, ".")
									.concat(Bs.CMD.LOGOUT)
							}),
							body: {}
						}
					}(e)), this._configMap.set(sl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_OPEN_STATUS, ".")
									.concat(Bs.CMD.HELLO)
							}),
							body: {},
							keyMap: {
								response: {
									NewInstInfo: "newInstanceInfo"
								}
							}
						}
					}(e)), this._configMap.set(Xl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_COS_SIGN, ".")
									.concat(Bs.CMD.COS_SIGN)
							}),
							body: {
								cmd: "open_im_cos_svc",
								subCmd: "get_cos_token",
								duration: 300,
								version: 2
							},
							keyMap: {
								request: {
									userSig: "usersig",
									subCmd: "sub_cmd",
									cmd: "cmd",
									duration: "duration",
									version: "version"
								},
								response: {
									expired_time: "expiredTime",
									bucket_name: "bucketName",
									session_token: "sessionToken",
									tmp_secret_id: "secretId",
									tmp_secret_key: "secretKey"
								}
							}
						}
					}(n)), this._configMap.set(Ql, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.CUSTOM_UPLOAD, ".")
									.concat(Bs.CMD.COS_PRE_SIG)
							}),
							body: {
								fileType: void 0,
								fileName: void 0,
								uploadMethod: 0,
								duration: 900
							},
							keyMap: {
								request: {
									userSig: "usersig",
									fileType: "file_type",
									fileName: "file_name",
									uploadMethod: "upload_method"
								},
								response: {
									expired_time: "expiredTime",
									request_id: "requestId",
									head_url: "headUrl",
									upload_url: "uploadUrl",
									download_url: "downloadUrl",
									ci_url: "ciUrl"
								}
							}
						}
					}(n)), this._configMap.set(sd, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.CLOUD_CONTROL, ".")
									.concat(Bs.CMD.FETCH_CLOUD_CONTROL_CONFIG)
							}),
							body: {
								SDKAppID: 0,
								version: 0
							},
							keyMap: {
								request: {
									SDKAppID: "uint32_sdkappid",
									version: "uint64_version"
								},
								response: {
									int32_error_code: "errorCode",
									str_error_message: "errorMessage",
									str_json_config: "cloudControlConfig",
									uint32_expired_time: "expiredTime",
									uint32_sdkappid: "SDKAppID",
									uint64_version: "version"
								}
							}
						}
					}(e)), this._configMap.set(id, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.CLOUD_CONTROL, ".")
									.concat(Bs.CMD.PUSHED_CLOUD_CONTROL_CONFIG)
							}),
							body: {},
							keyMap: {
								response: {
									int32_error_code: "errorCode",
									str_error_message: "errorMessage",
									str_json_config: "cloudControlConfig",
									uint32_expired_time: "expiredTime",
									uint32_sdkappid: "SDKAppID",
									uint64_version: "version"
								}
							}
						}
					}(e)), this._configMap.set(il, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.GET_MESSAGES)
							}),
							body: {
								cookie: "",
								syncFlag: 0,
								needAbstract: 1,
								isOnlineSync: 0
							},
							keyMap: {
								request: {
									fromAccount: "From_Account",
									toAccount: "To_Account",
									from: "From_Account",
									to: "To_Account",
									time: "MsgTimeStamp",
									sequence: "MsgSeq",
									random: "MsgRandom",
									elements: "MsgBody"
								},
								response: {
									MsgList: "messageList",
									SyncFlag: "syncFlag",
									To_Account: "to",
									From_Account: "from",
									ClientSeq: "clientSequence",
									MsgSeq: "sequence",
									NoticeSeq: "noticeSequence",
									NotifySeq: "notifySequence",
									MsgRandom: "random",
									MsgTimeStamp: "time",
									MsgContent: "content",
									ToGroupId: "groupID",
									MsgKey: "messageKey",
									GroupTips: "groupTips",
									MsgBody: "elements",
									MsgType: "type",
									C2CRemainingUnreadCount: "C2CRemainingUnreadList",
									C2CPairUnreadCount: "C2CPairUnreadList"
								}
							}
						}
					}(e)), this._configMap.set(cl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.BIG_DATA_HALLWAY_AUTH_KEY)
							}),
							body: {}
						}
					}(e)), this._configMap.set(ul, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.SEND_MESSAGE)
							}),
							body: {
								fromAccount: "",
								toAccount: "",
								msgTimeStamp: void 0,
								msgSeq: 0,
								msgRandom: 0,
								msgBody: [],
								cloudCustomData: void 0,
								nick: "",
								avatar: "",
								msgLifeTime: void 0,
								offlinePushInfo: {
									pushFlag: 0,
									title: "",
									desc: "",
									ext: "",
									apnsInfo: {
										badgeMode: 0
									},
									androidInfo: {
										OPPOChannelID: ""
									}
								}
							},
							keyMap: {
								request: {
									fromAccount: "From_Account",
									toAccount: "To_Account",
									msgTimeStamp: "MsgTimeStamp",
									msgSeq: "MsgSeq",
									msgRandom: "MsgRandom",
									msgBody: "MsgBody",
									count: "MaxCnt",
									lastMessageTime: "LastMsgTime",
									messageKey: "MsgKey",
									peerAccount: "Peer_Account",
									data: "Data",
									description: "Desc",
									extension: "Ext",
									type: "MsgType",
									content: "MsgContent",
									sizeType: "Type",
									uuid: "UUID",
									url: "",
									imageUrl: "URL",
									fileUrl: "Url",
									remoteAudioUrl: "Url",
									remoteVideoUrl: "VideoUrl",
									thumbUUID: "ThumbUUID",
									videoUUID: "VideoUUID",
									videoUrl: "",
									downloadFlag: "Download_Flag",
									nick: "From_AccountNick",
									avatar: "From_AccountHeadurl",
									from: "From_Account",
									time: "MsgTimeStamp",
									messageRandom: "MsgRandom",
									messageSequence: "MsgSeq",
									elements: "MsgBody",
									clientSequence: "ClientSeq",
									payload: "MsgContent",
									messageList: "MsgList",
									messageNumber: "MsgNum",
									abstractList: "AbstractList",
									messageBody: "MsgBody"
								}
							}
						}
					}(e)), this._configMap.set(ll, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.SEND_GROUP_MESSAGE)
							}),
							body: {
								fromAccount: "",
								groupID: "",
								random: 0,
								clientSequence: 0,
								priority: "",
								msgBody: [],
								cloudCustomData: void 0,
								onlineOnlyFlag: 0,
								offlinePushInfo: {
									pushFlag: 0,
									title: "",
									desc: "",
									ext: "",
									apnsInfo: {
										badgeMode: 0
									},
									androidInfo: {
										OPPOChannelID: ""
									}
								},
								groupAtInfo: []
							},
							keyMap: {
								request: {
									to: "GroupId",
									extension: "Ext",
									data: "Data",
									description: "Desc",
									random: "Random",
									sequence: "ReqMsgSeq",
									count: "ReqMsgNumber",
									type: "MsgType",
									priority: "MsgPriority",
									content: "MsgContent",
									elements: "MsgBody",
									sizeType: "Type",
									uuid: "UUID",
									url: "",
									imageUrl: "URL",
									fileUrl: "Url",
									remoteAudioUrl: "Url",
									remoteVideoUrl: "VideoUrl",
									thumbUUID: "ThumbUUID",
									videoUUID: "VideoUUID",
									videoUrl: "",
									downloadFlag: "Download_Flag",
									clientSequence: "ClientSeq",
									from: "From_Account",
									time: "MsgTimeStamp",
									messageRandom: "MsgRandom",
									messageSequence: "MsgSeq",
									payload: "MsgContent",
									messageList: "MsgList",
									messageNumber: "MsgNum",
									abstractList: "AbstractList",
									messageBody: "MsgBody"
								},
								response: {
									MsgTime: "time",
									MsgSeq: "sequence"
								}
							}
						}
					}(e)), this._configMap.set(_l, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.REVOKE_C2C_MESSAGE)
							}),
							body: {
								msgInfo: {
									fromAccount: "",
									toAccount: "",
									msgTimeStamp: 0,
									msgSeq: 0,
									msgRandom: 0
								}
							},
							keyMap: {
								request: {
									msgInfo: "MsgInfo",
									msgTimeStamp: "MsgTimeStamp",
									msgSeq: "MsgSeq",
									msgRandom: "MsgRandom"
								}
							}
						}
					}(e)), this._configMap.set(Ul, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.REVOKE_GROUP_MESSAGE)
							}),
							body: {
								to: "",
								msgSeqList: void 0
							},
							keyMap: {
								request: {
									to: "GroupId",
									msgSeqList: "MsgSeqList",
									msgSeq: "MsgSeq"
								}
							}
						}
					}(e)), this._configMap.set(vl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.GET_C2C_ROAM_MESSAGES)
							}),
							body: {
								peerAccount: "",
								count: 15,
								lastMessageTime: 0,
								messageKey: "",
								withRecalledMessage: 1
							},
							keyMap: {
								request: {
									messageKey: "MsgKey",
									peerAccount: "Peer_Account",
									count: "MaxCnt",
									lastMessageTime: "LastMsgTime",
									withRecalledMessage: "WithRecalledMsg"
								}
							}
						}
					}(e)), this._configMap.set(ql, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.GET_GROUP_ROAM_MESSAGES)
							}),
							body: {
								withRecalledMsg: 1,
								groupID: "",
								count: 15,
								sequence: ""
							},
							keyMap: {
								request: {
									sequence: "ReqMsgSeq",
									count: "ReqMsgNumber",
									withRecalledMessage: "WithRecalledMsg"
								},
								response: {
									Random: "random",
									MsgTime: "time",
									MsgSeq: "sequence",
									ReqMsgSeq: "sequence",
									RspMsgList: "messageList",
									IsPlaceMsg: "isPlaceMessage",
									IsSystemMsg: "isSystemMessage",
									ToGroupId: "to",
									EnumFrom_AccountType: "fromAccountType",
									EnumTo_AccountType: "toAccountType",
									GroupCode: "groupCode",
									MsgPriority: "priority",
									MsgBody: "elements",
									MsgType: "type",
									MsgContent: "content",
									IsFinished: "complete",
									Download_Flag: "downloadFlag",
									ClientSeq: "clientSequence",
									ThumbUUID: "thumbUUID",
									VideoUUID: "videoUUID"
								}
							}
						}
					}(e)), this._configMap.set(ml, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.SET_C2C_MESSAGE_READ)
							}),
							body: {
								C2CMsgReaded: void 0
							},
							keyMap: {
								request: {
									lastMessageTime: "LastedMsgTime"
								}
							}
						}
					}(e)), this._configMap.set(Fl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.SET_GROUP_MESSAGE_READ)
							}),
							body: {
								groupID: void 0,
								messageReadSeq: void 0
							},
							keyMap: {
								request: {
									messageReadSeq: "MsgReadedSeq"
								}
							}
						}
					}(e)), this._configMap.set(yl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.DELETE_C2C_MESSAGE)
							}),
							body: {
								fromAccount: "",
								to: "",
								keyList: void 0
							},
							keyMap: {
								request: {
									keyList: "MsgKeyList"
								}
							}
						}
					}(e)), this._configMap.set(Hl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.DELETE_GROUP_MESSAGE)
							}),
							body: {
								groupID: "",
								deleter: "",
								keyList: void 0
							},
							keyMap: {
								request: {
									deleter: "Deleter_Account",
									keyList: "Seqs"
								}
							}
						}
					}(e)), this._configMap.set(Ml, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.GET_PEER_READ_TIME)
							}),
							body: {
								userIDList: void 0
							},
							keyMap: {
								request: {
									userIDList: "To_Account"
								},
								response: {
									ReadTime: "peerReadTimeList"
								}
							}
						}
					}(e)), this._configMap.set(Sl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.RECENT_CONTACT, ".")
									.concat(Bs.CMD.GET_CONVERSATION_LIST)
							}),
							body: {
								fromAccount: void 0,
								count: 0
							},
							keyMap: {
								request: {},
								response: {
									SessionItem: "conversations",
									ToAccount: "groupID",
									To_Account: "userID",
									UnreadMsgCount: "unreadCount",
									MsgGroupReadedSeq: "messageReadSeq",
									C2cPeerReadTime: "c2cPeerReadTime"
								}
							}
						}
					}(e)), this._configMap.set(Il, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.RECENT_CONTACT, ".")
									.concat(Bs.CMD.PAGING_GET_CONVERSATION_LIST)
							}),
							body: {
								fromAccount: void 0,
								timeStamp: void 0,
								orderType: void 0,
								messageAssistFlag: 4
							},
							keyMap: {
								request: {
									messageAssistFlag: "MsgAssistFlags"
								},
								response: {
									SessionItem: "conversations",
									ToAccount: "groupID",
									To_Account: "userID",
									UnreadMsgCount: "unreadCount",
									MsgGroupReadedSeq: "messageReadSeq",
									C2cPeerReadTime: "c2cPeerReadTime",
									LastMsgFlags: "lastMessageFlag"
								}
							}
						}
					}(e)), this._configMap.set(Tl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.RECENT_CONTACT, ".")
									.concat(Bs.CMD.DELETE_CONVERSATION)
							}),
							body: {
								fromAccount: "",
								toAccount: void 0,
								type: 1,
								toGroupID: void 0
							},
							keyMap: {
								request: {
									toGroupID: "ToGroupid"
								}
							}
						}
					}(e)), this._configMap.set(El, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.DELETE_GROUP_AT_TIPS)
							}),
							body: {
								messageListToDelete: void 0
							},
							keyMap: {
								request: {
									messageListToDelete: "DelMsgList",
									messageSeq: "MsgSeq",
									messageRandom: "MsgRandom"
								}
							}
						}
					}(e)), this._configMap.set(dl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.PROFILE, ".").concat(
									Bs.CMD.PORTRAIT_GET)
							}),
							body: {
								fromAccount: "",
								userItem: []
							},
							keyMap: {
								request: {
									toAccount: "To_Account",
									standardSequence: "StandardSequence",
									customSequence: "CustomSequence"
								}
							}
						}
					}(e)), this._configMap.set(pl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.PROFILE, ".").concat(
									Bs.CMD.PORTRAIT_SET)
							}),
							body: {
								fromAccount: "",
								profileItem: [{
									tag: r_.NICK,
									value: ""
								}, {
									tag: r_.GENDER,
									value: ""
								}, {
									tag: r_.ALLOWTYPE,
									value: ""
								}, {
									tag: r_.AVATAR,
									value: ""
								}]
							},
							keyMap: {
								request: {
									toAccount: "To_Account",
									standardSequence: "StandardSequence",
									customSequence: "CustomSequence"
								}
							}
						}
					}(e)), this._configMap.set(gl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.FRIEND, ".").concat(
									Bs.CMD.GET_BLACKLIST)
							}),
							body: {
								fromAccount: "",
								startIndex: 0,
								maxLimited: 30,
								lastSequence: 0
							},
							keyMap: {
								response: {
									CurruentSequence: "currentSequence"
								}
							}
						}
					}(e)), this._configMap.set(hl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.FRIEND, ".").concat(
									Bs.CMD.ADD_BLACKLIST)
							}),
							body: {
								fromAccount: "",
								toAccount: []
							}
						}
					}(e)), this._configMap.set(fl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.FRIEND, ".").concat(
									Bs.CMD.DELETE_BLACKLIST)
							}),
							body: {
								fromAccount: "",
								toAccount: []
							}
						}
					}(e)), this._configMap.set(Dl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.GET_JOINED_GROUPS)
							}),
							body: {
								memberAccount: "",
								limit: void 0,
								offset: void 0,
								groupType: void 0,
								responseFilter: {
									groupBaseInfoFilter: void 0,
									selfInfoFilter: void 0
								}
							},
							keyMap: {
								request: {
									memberAccount: "Member_Account"
								},
								response: {
									GroupIdList: "groups",
									MsgFlag: "messageRemindType"
								}
							}
						}
					}(e)), this._configMap.set(kl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.GET_GROUP_INFO)
							}),
							body: {
								groupIDList: void 0,
								responseFilter: {
									groupBaseInfoFilter: ["Type", "Name",
										"Introduction", "Notification", "FaceUrl",
										"Owner_Account", "CreateTime", "InfoSeq",
										"LastInfoTime", "LastMsgTime", "MemberNum",
										"MaxMemberNum", "ApplyJoinOption",
										"NextMsgSeq", "ShutUpAllMember"
									],
									groupCustomFieldFilter: void 0,
									memberInfoFilter: void 0,
									memberCustomFieldFilter: void 0
								}
							},
							keyMap: {
								request: {
									groupIDList: "GroupIdList",
									groupCustomField: "AppDefinedData",
									memberCustomField: "AppMemberDefinedData",
									groupCustomFieldFilter: "AppDefinedDataFilter_Group",
									memberCustomFieldFilter: "AppDefinedDataFilter_GroupMember"
								},
								response: {
									GroupIdList: "groups",
									MsgFlag: "messageRemindType",
									AppDefinedData: "groupCustomField",
									AppMemberDefinedData: "memberCustomField",
									AppDefinedDataFilter_Group: "groupCustomFieldFilter",
									AppDefinedDataFilter_GroupMember: "memberCustomFieldFilter",
									InfoSeq: "infoSequence",
									MemberList: "members",
									GroupInfo: "groups",
									ShutUpUntil: "muteUntil",
									ShutUpAllMember: "muteAllMembers",
									ApplyJoinOption: "joinOption"
								}
							}
						}
					}(e)), this._configMap.set(Cl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.CREATE_GROUP)
							}),
							body: {
								type: void 0,
								name: void 0,
								groupID: void 0,
								ownerID: void 0,
								introduction: void 0,
								notification: void 0,
								maxMemberNum: void 0,
								joinOption: void 0,
								memberList: void 0,
								groupCustomField: void 0,
								memberCustomField: void 0,
								webPushFlag: 1,
								avatar: "FaceUrl"
							},
							keyMap: {
								request: {
									ownerID: "Owner_Account",
									userID: "Member_Account",
									avatar: "FaceUrl",
									maxMemberNum: "MaxMemberCount",
									joinOption: "ApplyJoinOption",
									groupCustomField: "AppDefinedData",
									memberCustomField: "AppMemberDefinedData"
								},
								response: {
									HugeGroupFlag: "avChatRoomFlag",
									OverJoinedGroupLimit_Account: "overLimitUserIDList"
								}
							}
						}
					}(e)), this._configMap.set(Nl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.DESTROY_GROUP)
							}),
							body: {
								groupID: void 0
							}
						}
					}(e)), this._configMap.set(Al, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.MODIFY_GROUP_INFO)
							}),
							body: {
								groupID: void 0,
								name: void 0,
								introduction: void 0,
								notification: void 0,
								avatar: void 0,
								maxMemberNum: void 0,
								joinOption: void 0,
								groupCustomField: void 0,
								muteAllMembers: void 0
							},
							keyMap: {
								request: {
									maxMemberNum: "MaxMemberCount",
									groupCustomField: "AppDefinedData",
									muteAllMembers: "ShutUpAllMember",
									joinOption: "ApplyJoinOption",
									avatar: "FaceUrl"
								},
								response: {
									AppDefinedData: "groupCustomField",
									ShutUpAllMember: "muteAllMembers",
									ApplyJoinOption: "joinOption"
								}
							}
						}
					}(e)), this._configMap.set(Ol, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.APPLY_JOIN_GROUP)
							}),
							body: {
								groupID: void 0,
								applyMessage: void 0,
								userDefinedField: void 0,
								webPushFlag: 1
							},
							keyMap: {
								response: {
									HugeGroupFlag: "avChatRoomFlag"
								}
							}
						}
					}(e)), this._configMap.set(Ll, function(e) {
						e.a2, e.tinyid;
						return {
							head: t(t({}, g(e, Ev)), {}, {
								servcmd: "".concat(Bs.NAME.BIG_GROUP_NO_AUTH,
									".").concat(Bs.CMD.APPLY_JOIN_GROUP)
							}),
							body: {
								groupID: void 0,
								applyMessage: void 0,
								userDefinedField: void 0,
								webPushFlag: 1
							},
							keyMap: {
								response: {
									HugeGroupFlag: "avChatRoomFlag"
								}
							}
						}
					}(e)), this._configMap.set(Rl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.QUIT_GROUP)
							}),
							body: {
								groupID: void 0
							}
						}
					}(e)), this._configMap.set(wl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.SEARCH_GROUP_BY_ID)
							}),
							body: {
								groupIDList: void 0,
								responseFilter: {
									groupBasePublicInfoFilter: ["Type", "Name",
										"Introduction", "Notification", "FaceUrl",
										"CreateTime", "Owner_Account",
										"LastInfoTime", "LastMsgTime", "NextMsgSeq",
										"MemberNum", "MaxMemberNum",
										"ApplyJoinOption"
									]
								}
							},
							keyMap: {
								response: {
									ApplyJoinOption: "joinOption"
								}
							}
						}
					}(e)), this._configMap.set(bl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.CHANGE_GROUP_OWNER)
							}),
							body: {
								groupID: void 0,
								newOwnerID: void 0
							},
							keyMap: {
								request: {
									newOwnerID: "NewOwner_Account"
								}
							}
						}
					}(e)), this._configMap.set(Pl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.HANDLE_APPLY_JOIN_GROUP)
							}),
							body: {
								groupID: void 0,
								applicant: void 0,
								handleAction: void 0,
								handleMessage: void 0,
								authentication: void 0,
								messageKey: void 0,
								userDefinedField: void 0
							},
							keyMap: {
								request: {
									applicant: "Applicant_Account",
									handleAction: "HandleMsg",
									handleMessage: "ApprovalMsg",
									messageKey: "MsgKey"
								}
							}
						}
					}(e)), this._configMap.set(Gl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.HANDLE_GROUP_INVITATION)
							}),
							body: {
								groupID: void 0,
								inviter: void 0,
								handleAction: void 0,
								handleMessage: void 0,
								authentication: void 0,
								messageKey: void 0,
								userDefinedField: void 0
							},
							keyMap: {
								request: {
									inviter: "Inviter_Account",
									handleAction: "HandleMsg",
									handleMessage: "ApprovalMsg",
									messageKey: "MsgKey"
								}
							}
						}
					}(e)), this._configMap.set(xl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.GET_GROUP_APPLICATION)
							}),
							body: {
								startTime: void 0,
								limit: void 0,
								handleAccount: void 0
							},
							keyMap: {
								request: {
									handleAccount: "Handle_Account"
								}
							}
						}
					}(e)), this._configMap.set(Vl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.DELETE_GROUP_SYSTEM_MESSAGE)
							}),
							body: {
								messageListToDelete: void 0
							},
							keyMap: {
								request: {
									messageListToDelete: "DelMsgList",
									messageSeq: "MsgSeq",
									messageRandom: "MsgRandom"
								}
							}
						}
					}(e)), this._configMap.set(Kl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME
									.BIG_GROUP_LONG_POLLING, ".").concat(Bs
									.CMD.AVCHATROOM_LONG_POLL)
							}),
							body: {
								USP: 1,
								startSeq: 1,
								holdTime: 90,
								key: void 0
							},
							keyMap: {
								request: {
									USP: "USP"
								},
								response: {
									ToGroupId: "groupID"
								}
							}
						}
					}(e)), this._configMap.set(Bl, function(e) {
						e.a2, e.tinyid;
						return {
							head: t(t({}, g(e, Dv)), {}, {
								servcmd: "".concat(Bs.NAME
										.BIG_GROUP_LONG_POLLING_NO_AUTH, ".")
									.concat(Bs.CMD.AVCHATROOM_LONG_POLL)
							}),
							body: {
								USP: 1,
								startSeq: 1,
								holdTime: 90,
								key: void 0
							},
							keyMap: {
								request: {
									USP: "USP"
								},
								response: {
									ToGroupId: "groupID"
								}
							}
						}
					}(e)), this._configMap.set(jl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.GET_ONLINE_MEMBER_NUM)
							}),
							body: {
								groupID: void 0
							}
						}
					}(e)), this._configMap.set($l, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.GET_GROUP_MEMBER_LIST)
							}),
							body: {
								groupID: void 0,
								limit: 0,
								offset: 0,
								memberRoleFilter: void 0,
								memberInfoFilter: ["Role", "NameCard", "ShutUpUntil",
									"JoinTime"
								],
								memberCustomFieldFilter: void 0
							},
							keyMap: {
								request: {
									memberCustomFieldFilter: "AppDefinedDataFilter_GroupMember"
								},
								response: {
									AppMemberDefinedData: "memberCustomField",
									AppDefinedDataFilter_GroupMember: "memberCustomFieldFilter",
									MemberList: "members",
									ShutUpUntil: "muteUntil"
								}
							}
						}
					}(e)), this._configMap.set(Yl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.GET_GROUP_MEMBER_INFO)
							}),
							body: {
								groupID: void 0,
								userIDList: void 0,
								memberInfoFilter: void 0,
								memberCustomFieldFilter: void 0
							},
							keyMap: {
								request: {
									userIDList: "Member_List_Account",
									memberCustomFieldFilter: "AppDefinedDataFilter_GroupMember"
								},
								response: {
									MemberList: "members",
									ShutUpUntil: "muteUntil",
									AppDefinedDataFilter_GroupMember: "memberCustomFieldFilter",
									AppMemberDefinedData: "memberCustomField"
								}
							}
						}
					}(e)), this._configMap.set(zl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.ADD_GROUP_MEMBER)
							}),
							body: {
								groupID: void 0,
								silence: void 0,
								userIDList: void 0
							},
							keyMap: {
								request: {
									userID: "Member_Account",
									userIDList: "MemberList"
								},
								response: {
									MemberList: "members"
								}
							}
						}
					}(e)), this._configMap.set(Wl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.DELETE_GROUP_MEMBER)
							}),
							body: {
								groupID: void 0,
								userIDList: void 0,
								reason: void 0
							},
							keyMap: {
								request: {
									userIDList: "MemberToDel_Account"
								}
							}
						}
					}(e)), this._configMap.set(Jl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.GROUP, ".").concat(Bs
									.CMD.MODIFY_GROUP_MEMBER_INFO)
							}),
							body: {
								groupID: void 0,
								userID: void 0,
								messageRemindType: void 0,
								nameCard: void 0,
								role: void 0,
								memberCustomField: void 0,
								muteTime: void 0
							},
							keyMap: {
								request: {
									userID: "Member_Account",
									memberCustomField: "AppMemberDefinedData",
									muteTime: "ShutUpTime",
									messageRemindType: "MsgFlag"
								}
							}
						}
					}(e)), this._configMap.set(Zl, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_OPEN_STAT, ".")
									.concat(Bs.CMD.TIM_WEB_REPORT_V2)
							}),
							body: {
								header: {},
								event: [],
								quality: []
							},
							keyMap: {
								request: {
									SDKType: "sdk_type",
									SDKVersion: "sdk_version",
									deviceType: "device_type",
									platform: "platform",
									instanceID: "instance_id",
									traceID: "trace_id",
									SDKAppID: "sdk_app_id",
									userID: "user_id",
									tinyID: "tiny_id",
									extension: "extension",
									timestamp: "timestamp",
									networkType: "network_type",
									eventType: "event_type",
									code: "error_code",
									message: "error_message",
									moreMessage: "more_message",
									duplicate: "duplicate",
									costTime: "cost_time",
									level: "level",
									qualityType: "quality_type",
									reportIndex: "report_index",
									wholePeriod: "whole_period",
									totalCount: "total_count",
									rttCount: "success_count_business",
									successRateOfRequest: "percent_business",
									countLessThan1Second: "success_count_business",
									percentOfCountLessThan1Second: "percent_business",
									countLessThan3Second: "success_count_platform",
									percentOfCountLessThan3Second: "percent_platform",
									successCountOfBusiness: "success_count_business",
									successRateOfBusiness: "percent_business",
									successCountOfPlatform: "success_count_platform",
									successRateOfPlatform: "percent_platform",
									successCountOfMessageReceived: "success_count_business",
									successRateOfMessageReceived: "percent_business",
									avgRTT: "average_value",
									avgDelay: "average_value",
									avgValue: "average_value"
								}
							}
						}
					}(o)), this._configMap.set(ed, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.HEARTBEAT, ".")
									.concat(Bs.CMD.ALIVE)
							}),
							body: {}
						}
					}(e)), this._configMap.set(td, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_OPEN_PUSH, ".")
									.concat(Bs.CMD.MESSAGE_PUSH)
							}),
							body: {},
							keyMap: {
								response: {
									C2cMsgArray: "C2CMessageArray",
									GroupMsgArray: "groupMessageArray",
									GroupTips: "groupTips",
									C2cNotifyMsgArray: "C2CNotifyMessageArray",
									ClientSeq: "clientSequence",
									MsgPriority: "priority",
									NoticeSeq: "noticeSequence",
									MsgContent: "content",
									MsgType: "type",
									MsgBody: "elements",
									ToGroupId: "to",
									Desc: "description",
									Ext: "extension",
									IsSyncMsg: "isSyncMessage",
									Flag: "needSync",
									NeedAck: "needAck",
									PendencyAdd_Account: "userID",
									ProfileImNick: "nick",
									PendencyType: "applicationType"
								}
							}
						}
					}(e)), this._configMap.set(nd, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.OPEN_IM, ".").concat(
									Bs.CMD.MESSAGE_PUSH_ACK)
							}),
							body: {
								sessionData: void 0
							},
							keyMap: {
								request: {
									sessionData: "SessionData"
								}
							}
						}
					}(e)), this._configMap.set(od, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_OPEN_STATUS, ".")
									.concat(Bs.CMD.STATUS_FORCEOFFLINE)
							}),
							body: {},
							keyMap: {
								response: {
									C2cNotifyMsgArray: "C2CNotifyMessageArray",
									NoticeSeq: "noticeSequence",
									KickoutMsgNotify: "kickoutMsgNotify",
									NewInstInfo: "newInstanceInfo"
								}
							}
						}
					}(e)), this._configMap.set(ad, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_LONG_MESSAGE, ".")
									.concat(Bs.CMD.DOWNLOAD_MERGER_MESSAGE)
							}),
							body: {
								downloadKey: ""
							},
							keyMap: {
								response: {
									Data: "data",
									Desc: "description",
									Ext: "extension",
									Download_Flag: "downloadFlag",
									ThumbUUID: "thumbUUID",
									VideoUUID: "videoUUID"
								}
							}
						}
					}(e)), this._configMap.set(rd, function(e) {
						return {
							head: t(t({}, e), {}, {
								servcmd: "".concat(Bs.NAME.IM_LONG_MESSAGE, ".")
									.concat(Bs.CMD.UPLOAD_MERGER_MESSAGE)
							}),
							body: {
								messageList: []
							},
							keyMap: {
								request: {
									fromAccount: "From_Account",
									toAccount: "To_Account",
									msgTimeStamp: "MsgTimeStamp",
									msgSeq: "MsgSeq",
									msgRandom: "MsgRandom",
									msgBody: "MsgBody",
									type: "MsgType",
									content: "MsgContent",
									data: "Data",
									description: "Desc",
									extension: "Ext",
									sizeType: "Type",
									uuid: "UUID",
									url: "",
									imageUrl: "URL",
									fileUrl: "Url",
									remoteAudioUrl: "Url",
									remoteVideoUrl: "VideoUrl",
									thumbUUID: "ThumbUUID",
									videoUUID: "VideoUUID",
									videoUrl: "",
									downloadFlag: "Download_Flag",
									from: "From_Account",
									time: "MsgTimeStamp",
									messageRandom: "MsgRandom",
									messageSequence: "MsgSeq",
									elements: "MsgBody",
									clientSequence: "ClientSeq",
									payload: "MsgContent",
									messageList: "MsgList",
									messageNumber: "MsgNum",
									abstractList: "AbstractList",
									messageBody: "MsgBody"
								}
							}
						}
					}(e))
				}
			}, {
				key: "has",
				value: function(e) {
					return this._configMap.has(e)
				}
			}, {
				key: "get",
				value: function(e) {
					return this._configMap.get(e)
				}
			}, {
				key: "update",
				value: function() {
					this._fillConfigMap()
				}
			}, {
				key: "getKeyMap",
				value: function(e) {
					return this.has(e) ? this.get(e).keyMap || {} : (Gi.warn("".concat(this
						._className, ".getKeyMap unknown protocolName:").concat(e)), {})
				}
			}, {
				key: "getProtocolData",
				value: function(e) {
					var t = e.protocolName,
						n = e.requestData,
						o = this.get(t),
						r = null;
					if (n) {
						var a = this._simpleDeepCopy(o),
							s = a.body,
							i = Object.create(null);
						for (var c in s)
							if (Object.prototype.hasOwnProperty.call(s, c)) {
								if (i[c] = s[c], void 0 === n[c]) continue;
								i[c] = n[c]
							} a.body = i, r = this._getUplinkData(a)
					} else r = this._getUplinkData(o);
					return r
				}
			}, {
				key: "_getUplinkData",
				value: function(e) {
					var t = this._requestDataCleaner(e),
						n = vc(t.head),
						o = pv(t.body, this._getRequestKeyMap(n));
					return t.body = o, t
				}
			}, {
				key: "_getRequestKeyMap",
				value: function(e) {
					var n = this.getKeyMap(e);
					return t(t({}, cv.request), n.request)
				}
			}, {
				key: "_requestDataCleaner",
				value: function(e) {
					var t = Array.isArray(e) ? [] : Object.create(null);
					for (var o in e) Object.prototype.hasOwnProperty.call(e, o) && Wi(o) &&
						null !== e[o] && void 0 !== e[o] && ("object" !== n(e[o]) ? t[o] = e[
							o] : t[o] = this._requestDataCleaner.bind(this)(e[o]));
					return t
				}
			}, {
				key: "_simpleDeepCopy",
				value: function(e) {
					for (var t, n = Object.keys(e), o = {}, r = 0, a = n.length; r < a; r++) t =
						n[r], Bi(e[t]) ? o[t] = Array.from(e[t]) : Vi(e[t]) ? o[t] = this
						._simpleDeepCopy(e[t]) : o[t] = e[t];
					return o
				}
			}]), e
		}(),
		Cv = [nd],
		Nv = function() {
			function e(t) {
				o(this, e), this._sessionModule = t, this._className = "DownlinkHandler", this
					._eventHandlerMap = new Map, this._eventHandlerMap.set("C2CMessageArray", this
						._c2cMessageArrayHandler.bind(this)), this._eventHandlerMap.set("groupMessageArray",
						this._groupMessageArrayHandler.bind(this)), this._eventHandlerMap.set("groupTips", this
						._groupTipsHandler.bind(this)), this._eventHandlerMap.set("C2CNotifyMessageArray", this
						._C2CNotifyMessageArrayHandler.bind(this)), this._eventHandlerMap.set("profileModify",
						this._profileHandler.bind(this)), this._eventHandlerMap.set("friendListMod", this
						._relationChainHandler.bind(this)), this._keys = v(this._eventHandlerMap.keys())
			}
			return a(e, [{
				key: "_c2cMessageArrayHandler",
				value: function(e) {
					var t = this._sessionModule.getModule(Fu);
					if (t) {
						if (e.dataList.forEach((function(e) {
								if (1 === e.isSyncMessage) {
									var t = e.from;
									e.from = e.to, e.to = t
								}
							})), 1 === e.needSync) this._sessionModule.getModule(Ju)
							.startOnlineSync();
						t.onNewC2CMessage({
							dataList: e.dataList,
							isInstantMessage: !0
						})
					}
				}
			}, {
				key: "_groupMessageArrayHandler",
				value: function(e) {
					var t = this._sessionModule.getModule(qu);
					t && t.onNewGroupMessage({
						event: e.event,
						dataList: e.dataList,
						isInstantMessage: !0
					})
				}
			}, {
				key: "_groupTipsHandler",
				value: function(e) {
					var t = this._sessionModule.getModule(qu);
					if (t) {
						var n = e.event,
							o = e.dataList,
							r = e.isInstantMessage,
							a = void 0 === r || r,
							s = e.isSyncingEnded;
						switch (n) {
							case 4:
							case 6:
								t.onNewGroupTips({
									event: n,
									dataList: o
								});
								break;
							case 5:
								o.forEach((function(e) {
									Bi(e.elements.revokedInfos) ? t
										.onGroupMessageRevoked({
											dataList: o
										}) : Bi(e.elements.groupMessageReadNotice) ?
										t.onGroupMessageReadNotice({
											dataList: o
										}) : t.onNewGroupSystemNotice({
											dataList: o,
											isInstantMessage: a,
											isSyncingEnded: s
										})
								}));
								break;
							case 12:
								this._sessionModule.getModule(Ku).onNewGroupAtTips({
									dataList: o
								});
								break;
							default:
								Gi.log("".concat(this._className,
									"._groupTipsHandler unknown event:").concat(n,
									" dataList:"), o)
						}
					}
				}
			}, {
				key: "_C2CNotifyMessageArrayHandler",
				value: function(e) {
					var t = this,
						n = e.dataList;
					if (Bi(n)) {
						var o = this._sessionModule.getModule(Fu);
						n.forEach((function(e) {
							if (Ki(e))
								if (e.hasOwnProperty("kickoutMsgNotify")) {
									var r = e.kickoutMsgNotify,
										a = r.kickType,
										s = r.newInstanceInfo,
										i = void 0 === s ? {} : s;
									1 === a ? t._sessionModule
										.onMultipleAccountKickedOut(i) : 2 === a &&
										t._sessionModule.onMultipleDeviceKickedOut(
											i)
								} else e.hasOwnProperty("c2cMessageRevokedNotify") ?
									o && o.onC2CMessageRevoked({
										dataList: n
									}) : e.hasOwnProperty("c2cMessageReadReceipt") ?
									o && o.onC2CMessageReadReceipt({
										dataList: n
									}) : e.hasOwnProperty("c2cMessageReadNotice") &&
									o && o.onC2CMessageReadNotice({
										dataList: n
									})
						}))
					}
				}
			}, {
				key: "_profileHandler",
				value: function(e) {
					this._sessionModule.getModule(Uu).onProfileModified({
						dataList: e.dataList
					});
					var t = this._sessionModule.getModule(xu);
					t && t.onFriendProfileModified({
						dataList: e.dataList
					})
				}
			}, {
				key: "_relationChainHandler",
				value: function(e) {
					this._sessionModule.getModule(Uu).onRelationChainModified({
						dataList: e.dataList
					});
					var t = this._sessionModule.getModule(xu);
					t && t.onRelationChainModified({
						dataList: e.dataList
					})
				}
			}, {
				key: "_cloudControlConfigHandler",
				value: function(e) {
					this._sessionModule.getModule(el).onPushedCloudControlConfig(e)
				}
			}, {
				key: "onMessage",
				value: function(e) {
					var t = this,
						n = e.head,
						o = e.body;
					if (this._isPushedCloudControlConfig(n)) this._cloudControlConfigHandler(o);
					else {
						var r = o.eventArray,
							a = o.isInstantMessage,
							s = o.isSyncingEnded,
							i = o.needSync;
						if (Bi(r))
							for (var c = null, u = null, l = 0, d = 0, p = r.length; d <
								p; d++) {
								l = (c = r[d]).event;
								var g = Object.keys(c).find((function(e) {
									return -1 !== t._keys.indexOf(e)
								}));
								g ? (u = c[g], this._eventHandlerMap.get(g)({
									event: l,
									dataList: u,
									isInstantMessage: a,
									isSyncingEnded: s,
									needSync: i
								})) : Gi.log("".concat(this._className,
									".onMessage unknown eventItem:").concat(c))
							}
					}
				}
			}, {
				key: "_isPushedCloudControlConfig",
				value: function(e) {
					return e.servcmd && e.servcmd.includes(id)
				}
			}]), e
		}(),
		Av = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "SessionModule", r._platform = r
					.getPlatform(), r._protocolHandler = new kv(h(r)), r._messageDispatcher = new Nv(h(r)), r
			}
			return a(n, [{
				key: "updateProtocolConfig",
				value: function() {
					this._protocolHandler.update()
				}
			}, {
				key: "request",
				value: function(e) {
					Gi.debug("".concat(this._className, ".request options:"), e);
					var t = e.protocolName,
						n = e.tjgID;
					if (!this._protocolHandler.has(t)) return Gi.warn("".concat(this._className,
						".request unknown protocol:").concat(t)), x_({
						code: cd.CANNOT_FIND_PROTOCOL,
						message: hp
					});
					var o = this.getProtocolData(e);
					Tc(n) || (o.head.tjgID = n);
					var r = this.getModule(Qu);
					return Cv.includes(t) ? r.simplySend(o) : r.send(o)
				}
			}, {
				key: "getKeyMap",
				value: function(e) {
					return this._protocolHandler.getKeyMap(e)
				}
			}, {
				key: "genCommonHead",
				value: function() {
					var e = this.getModule(Bu);
					return {
						ver: "v4",
						platform: this._platform,
						websdkappid: qs,
						websdkversion: Fs,
						a2: e.getA2Key() || void 0,
						tinyid: e.getTinyID() || void 0,
						status_instid: e.getStatusInstanceID(),
						sdkappid: e.getSDKAppID(),
						contenttype: e.getContentType(),
						reqtime: 0,
						identifier: e.getA2Key() ? void 0 : e.getUserID(),
						usersig: e.getA2Key() ? void 0 : e.getUserSig(),
						sdkability: 2,
						tjgID: ""
					}
				}
			}, {
				key: "genCosSpecifiedHead",
				value: function() {
					var e = this.getModule(Bu);
					return {
						ver: "v4",
						platform: this._platform,
						websdkappid: qs,
						websdkversion: Fs,
						sdkappid: e.getSDKAppID(),
						contenttype: e.getContentType(),
						reqtime: 0,
						identifier: e.getUserID(),
						usersig: e.getUserSig(),
						status_instid: e.getStatusInstanceID(),
						sdkability: 2
					}
				}
			}, {
				key: "genSSOReportHead",
				value: function() {
					var e = this.getModule(Bu);
					return {
						ver: "v4",
						platform: this._platform,
						websdkappid: qs,
						websdkversion: Fs,
						sdkappid: e.getSDKAppID(),
						contenttype: "",
						reqtime: 0,
						identifier: "",
						usersig: "",
						status_instid: e.getStatusInstanceID(),
						sdkability: 2
					}
				}
			}, {
				key: "getProtocolData",
				value: function(e) {
					return this._protocolHandler.getProtocolData(e)
				}
			}, {
				key: "onErrorCodeNotZero",
				value: function(e) {
					var t = e.errorCode;
					if (t === cd.HELLO_ANSWER_KICKED_OUT) {
						var n = e.kickType,
							o = e.newInstanceInfo,
							r = void 0 === o ? {} : o;
						1 === n ? this.onMultipleAccountKickedOut(r) : 2 === n && this
							.onMultipleDeviceKickedOut(r)
					}
					t !== cd.MESSAGE_A2KEY_EXPIRED && t !== cd.ACCOUNT_A2KEY_EXPIRED || (this
						._onUserSigExpired(), this.getModule(Qu).reConnect())
				}
			}, {
				key: "onMessage",
				value: function(e) {
					var t = e.body,
						n = t.needAck,
						o = void 0 === n ? 0 : n,
						r = t.sessionData;
					1 === o && this._sendACK(r), this._messageDispatcher.onMessage(e)
				}
			}, {
				key: "onReconnected",
				value: function() {
					var e = this;
					this.isLoggedIn() && this.request({
						protocolName: rl
					}).then((function(t) {
						var n = t.data.instanceID;
						e.getModule(Bu).setStatusInstanceID(n), Gi.log("".concat(e
								._className,
								".onReconnected, login ok. start to sync unread messages."
								)), e.getModule(Ju).startSyncOnReconnected(), e
							.getModule(tl).startPull()
					}))
				}
			}, {
				key: "onMultipleAccountKickedOut",
				value: function(e) {
					this.getModule(Pu).onMultipleAccountKickedOut(e)
				}
			}, {
				key: "onMultipleDeviceKickedOut",
				value: function(e) {
					this.getModule(Pu).onMultipleDeviceKickedOut(e)
				}
			}, {
				key: "_onUserSigExpired",
				value: function() {
					this.getModule(Pu).onUserSigExpired()
				}
			}, {
				key: "_sendACK",
				value: function(e) {
					this.request({
						protocolName: nd,
						requestData: {
							sessionData: e
						}
					})
				}
			}]), n
		}(ol),
		Ov = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "MessageLossDetectionModule", r
					._maybeLostSequencesMap = new Map, r
			}
			return a(n, [{
				key: "onMessageMaybeLost",
				value: function(e, t, n) {
					this._maybeLostSequencesMap.has(e) || this._maybeLostSequencesMap.set(e,
				[]);
					for (var o = this._maybeLostSequencesMap.get(e), r = 0; r < n; r++) o.push(
						t + r);
					Gi.debug("".concat(this._className,
						".onMessageMaybeLost. maybeLostSequences:").concat(o))
				}
			}, {
				key: "detectMessageLoss",
				value: function(e, t) {
					var n = this._maybeLostSequencesMap.get(e);
					if (!Tc(n) && !Tc(t)) {
						var o = t.filter((function(e) {
							return -1 !== n.indexOf(e)
						}));
						if (Gi.debug("".concat(this._className,
								".detectMessageLoss. matchedSequences:").concat(o)), n
							.length === o.length) Gi.info("".concat(this._className,
								".detectMessageLoss no message loss. conversationID:")
							.concat(e));
						else {
							var r, a = n.filter((function(e) {
									return -1 === o.indexOf(e)
								})),
								s = a.length;
							s <= 5 ? r = e + "-" + a.join("-") : (a.sort((function(e, t) {
									return e - t
								})), r = e + " start:" + a[0] + " end:" + a[s - 1] +
								" count:" + s), new Lp(Ug).setMessage(r).setNetworkType(this
								.getNetworkType()).setLevel("warning").end(), Gi.warn(""
								.concat(this._className,
									".detectMessageLoss message loss detected. conversationID:"
									).concat(e, " lostSequences:").concat(a))
						}
						n.length = 0
					}
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._maybeLostSequencesMap
						.clear()
				}
			}]), n
		}(ol),
		Lv = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "CloudControlModule", r._cloudConfig =
					new Map, r._expiredTime = 0, r._version = 0, r._isFetching = !1, r
			}
			return a(n, [{
				key: "getCloudConfig",
				value: function(e) {
					return ji(e) ? this._cloudConfig : this._cloudConfig.has(e) ? this
						._cloudConfig.get(e) : void 0
				}
			}, {
				key: "_canFetchConfig",
				value: function() {
					return this.isLoggedIn() && !this._isFetching && Date.now() >= this
						._expiredTime
				}
			}, {
				key: "fetchConfig",
				value: function() {
					var e = this,
						t = this._canFetchConfig();
					if (Gi.log("".concat(this._className, ".fetchConfig canFetchConfig:")
							.concat(t)), t) {
						var n = new Lp(Hg),
							o = this.getModule(Bu).getSDKAppID();
						this._isFetching = !0, this.request({
							protocolName: sd,
							requestData: {
								SDKAppID: o,
								version: this._version
							}
						}).then((function(t) {
							e._isFetching = !1, n.setMessage("version:".concat(e
									._version, " newVersion:").concat(t.data
									.version, " config:").concat(t.data
									.cloudControlConfig)).setNetworkType(e
									.getNetworkType()).end(), Gi.log("".concat(e
									._className, ".fetchConfig ok")), e
								._parseCloudControlConfig(t.data)
						})).catch((function(t) {
							e._isFetching = !1, e.probeNetwork().then((function(e) {
									var o = m(e, 2),
										r = o[0],
										a = o[1];
									n.setError(t, r, a).end()
								})), Gi.log("".concat(e._className,
									".fetchConfig failed. error:"), t), e
								._setExpiredTimeOnResponseError(12e4)
						}))
					}
				}
			}, {
				key: "onPushedCloudControlConfig",
				value: function(e) {
					Gi.log("".concat(this._className, ".onPushedCloudControlConfig")), new Lp(
							$g).setNetworkType(this.getNetworkType()).setMessage("newVersion:"
							.concat(e.version, " config:").concat(e.cloudControlConfig)).end(),
						this._parseCloudControlConfig(e)
				}
			}, {
				key: "onCheckTimer",
				value: function(e) {
					this._canFetchConfig() && this.fetchConfig()
				}
			}, {
				key: "_parseCloudControlConfig",
				value: function(e) {
					var t = this,
						n = "".concat(this._className, "._parseCloudControlConfig"),
						o = e.errorCode,
						r = e.errorMessage,
						a = e.cloudControlConfig,
						s = e.version,
						i = e.expiredTime;
					if (0 === o) {
						if (this._version !== s) {
							var c = null;
							try {
								c = JSON.parse(a)
							} catch (Hv) {
								Gi.error("".concat(n, " JSON parse error:").concat(a))
							}
							c && (this._cloudConfig.clear(), Object.keys(c).forEach((function(
							e) {
								t._cloudConfig.set(e, c[e])
							})), this._version = s, this.emitInnerEvent(im
								.CLOUD_CONFIG_UPDATED))
						}
						this._expiredTime = Date.now() + 1e3 * i
					} else ji(o) ? (Gi.log("".concat(n, " failed. Invalid message format:"), e),
						this._setExpiredTimeOnResponseError(36e5)) : (Gi.error("".concat(n,
							" errorCode:").concat(o, " errorMessage:").concat(r)), this
						._setExpiredTimeOnResponseError(12e4))
				}
			}, {
				key: "_setExpiredTimeOnResponseError",
				value: function(e) {
					this._expiredTime = Date.now() + e
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._cloudConfig.clear(),
						this._expiredTime = 0, this._version = 0, this._isFetching = !1
				}
			}]), n
		}(ol),
		Rv = function(e) {
			i(n, e);
			var t = _(n);

			function n(e) {
				var r;
				return o(this, n), (r = t.call(this, e))._className = "PullGroupMessageModule", r
					._remoteLastMessageSequenceMap = new Map, r.PULL_LIMIT_COUNT = 15, r
			}
			return a(n, [{
				key: "startPull",
				value: function() {
					var e = this,
						t = this._getNeedPullConversationList();
					this._getRemoteLastMessageSequenceList().then((function() {
						var n = e.getModule(Ku);
						t.forEach((function(t) {
							var o = t.conversationID,
								r = o.replace(Zn.CONV_GROUP, ""),
								a = n.getGroupLocalLastMessageSequence(
									o),
								s = e._remoteLastMessageSequenceMap.get(
									r) || 0,
								i = s - a;
							Gi.log("".concat(e._className,
										".startPull groupID:").concat(r,
										" localLastMessageSequence:")
									.concat(a, " ") +
									"remoteLastMessageSequence:".concat(
										s, " diff:").concat(i)), a >
								0 && i > 1 && i < 300 && e
								._pullMissingMessage({
									groupID: r,
									localLastMessageSequence: a,
									remoteLastMessageSequence: s,
									diff: i
								})
						}))
					}))
				}
			}, {
				key: "_getNeedPullConversationList",
				value: function() {
					return this.getModule(Ku).getLocalConversationList().filter((function(e) {
						return e.type === Zn.CONV_GROUP && e.groupProfile.type !==
							Zn.GRP_AVCHATROOM
					}))
				}
			}, {
				key: "_getRemoteLastMessageSequenceList",
				value: function() {
					var e = this;
					return this.getModule(qu).getGroupList().then((function(t) {
						for (var n = t.data.groupList, o = void 0 === n ? [] : n,
								r = 0; r < o.length; r++) {
							var a = o[r],
								s = a.groupID,
								i = a.nextMessageSeq;
							if (a.type !== Zn.GRP_AVCHATROOM) {
								var c = i - 1;
								e._remoteLastMessageSequenceMap.set(s, c)
							}
						}
					}))
				}
			}, {
				key: "_pullMissingMessage",
				value: function(e) {
					var t = this,
						n = e.localLastMessageSequence,
						o = e.remoteLastMessageSequence,
						r = e.diff;
					e.count = r > this.PULL_LIMIT_COUNT ? this.PULL_LIMIT_COUNT : r, e
						.sequence = r > this.PULL_LIMIT_COUNT ? n + this.PULL_LIMIT_COUNT : n +
						r, this._getGroupMissingMessage(e).then((function(a) {
							a.length > 0 && (a[0].sequence + 1 <= o && (e
									.localLastMessageSequence = n + t
									.PULL_LIMIT_COUNT, e.diff = r - t
									.PULL_LIMIT_COUNT, t._pullMissingMessage(e)), t
								.getModule(qu).onNewGroupMessage({
									dataList: a,
									isInstantMessage: !1
								}))
						}))
				}
			}, {
				key: "_getGroupMissingMessage",
				value: function(e) {
					var t = this,
						n = new Lp(Tg);
					return this.request({
						protocolName: ql,
						requestData: {
							groupID: e.groupID,
							count: e.count,
							sequence: e.sequence
						}
					}).then((function(o) {
						var r = o.data.messageList,
							a = void 0 === r ? [] : r;
						return n.setNetworkType(t.getNetworkType()).setMessage(
								"groupID:".concat(e.groupID, " count:").concat(e
									.count, " sequence:").concat(e.sequence,
									" messageList length:").concat(a.length)).end(),
							a
					})).catch((function(e) {
						t.probeNetwork().then((function(t) {
							var o = m(t, 2),
								r = o[0],
								a = o[1];
							n.setError(e, r, a).end()
						}))
					}))
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this
						._remoteLastMessageSequenceMap.clear()
				}
			}]), n
		}(ol),
		wv = function() {
			function e() {
				o(this, e), this._className = "AvgE2EDelay", this._e2eDelayArray = []
			}
			return a(e, [{
				key: "addMessageDelay",
				value: function(e) {
					var t = Mc(e.currentTime / 1e3 - e.time, 2);
					this._e2eDelayArray.push(t)
				}
			}, {
				key: "_calcAvg",
				value: function(e, t) {
					if (0 === t) return 0;
					var n = 0;
					return e.forEach((function(e) {
						n += e
					})), Mc(n / t, 1)
				}
			}, {
				key: "_calcTotalCount",
				value: function() {
					return this._e2eDelayArray.length
				}
			}, {
				key: "_calcCountWithLimit",
				value: function(e) {
					var t = e.e2eDelayArray,
						n = e.min,
						o = e.max;
					return t.filter((function(e) {
						return n < e && e <= o
					})).length
				}
			}, {
				key: "_calcPercent",
				value: function(e, t) {
					var n = Mc(e / t * 100, 2);
					return n > 100 && (n = 100), n
				}
			}, {
				key: "_checkE2EDelayException",
				value: function(e, t) {
					var n = e.filter((function(e) {
						return e > t
					}));
					if (n.length > 0) {
						var o = n.length,
							r = Math.min.apply(Math, v(n)),
							a = Math.max.apply(Math, v(n)),
							s = this._calcAvg(n, o),
							i = Mc(o / e.length * 100, 2);
						new Lp(og).setMessage("message e2e delay exception. count:".concat(o,
							" min:").concat(r, " max:").concat(a, " avg:").concat(s,
							" percent:").concat(i)).setLevel("warning").end()
					}
				}
			}, {
				key: "getStatResult",
				value: function() {
					var e = this._calcTotalCount();
					if (0 === e) return null;
					var t = v(this._e2eDelayArray),
						n = this._calcCountWithLimit({
							e2eDelayArray: t,
							min: 0,
							max: 1
						}),
						o = this._calcCountWithLimit({
							e2eDelayArray: t,
							min: 1,
							max: 3
						}),
						r = this._calcPercent(n, e),
						a = this._calcPercent(o, e),
						s = this._calcAvg(t, e);
					return this._checkE2EDelayException(t, 3), this.reset(), {
						totalCount: e,
						countLessThan1Second: n,
						percentOfCountLessThan1Second: r,
						countLessThan3Second: o,
						percentOfCountLessThan3Second: a,
						avgDelay: s
					}
				}
			}, {
				key: "reset",
				value: function() {
					this._e2eDelayArray.length = 0
				}
			}]), e
		}(),
		bv = function() {
			function e() {
				o(this, e), this._className = "AvgRTT", this._requestCount = 0, this._rttArray = []
			}
			return a(e, [{
				key: "addRequestCount",
				value: function() {
					this._requestCount += 1
				}
			}, {
				key: "addRTT",
				value: function(e) {
					this._rttArray.push(e)
				}
			}, {
				key: "_calcTotalCount",
				value: function() {
					return this._requestCount
				}
			}, {
				key: "_calcRTTCount",
				value: function(e) {
					return e.length
				}
			}, {
				key: "_calcSuccessRateOfRequest",
				value: function(e, t) {
					if (0 === t) return 0;
					var n = Mc(e / t * 100, 2);
					return n > 100 && (n = 100), n
				}
			}, {
				key: "_calcAvg",
				value: function(e, t) {
					if (0 === t) return 0;
					var n = 0;
					return e.forEach((function(e) {
						n += e
					})), parseInt(n / t)
				}
			}, {
				key: "_calcMax",
				value: function() {
					return Math.max.apply(Math, v(this._rttArray))
				}
			}, {
				key: "_calcMin",
				value: function() {
					return Math.min.apply(Math, v(this._rttArray))
				}
			}, {
				key: "getStatResult",
				value: function() {
					var e = this._calcTotalCount(),
						t = v(this._rttArray);
					if (0 === e) return null;
					var n = this._calcRTTCount(t),
						o = this._calcSuccessRateOfRequest(n, e),
						r = this._calcAvg(t, n);
					return Gi.log("".concat(this._className, ".getStatResult max:").concat(this
							._calcMax(), " min:").concat(this._calcMin(), " avg:").concat(
						r)), this.reset(), {
						totalCount: e,
						rttCount: n,
						successRateOfRequest: o,
						avgRTT: r
					}
				}
			}, {
				key: "reset",
				value: function() {
					this._requestCount = 0, this._rttArray.length = 0
				}
			}]), e
		}(),
		Pv = function() {
			function e(t) {
				var n = this;
				o(this, e), this._map = new Map, t.forEach((function(e) {
					n._map.set(e, {
						totalCount: 0,
						successCount: 0,
						failedCountOfUserSide: 0,
						costArray: [],
						fileSizeArray: []
					})
				}))
			}
			return a(e, [{
				key: "addTotalCount",
				value: function(e) {
					return !(ji(e) || !this._map.has(e)) && (this._map.get(e).totalCount += 1, !
						0)
				}
			}, {
				key: "addSuccessCount",
				value: function(e) {
					return !(ji(e) || !this._map.has(e)) && (this._map.get(e).successCount += 1,
						!0)
				}
			}, {
				key: "addFailedCountOfUserSide",
				value: function(e) {
					return !(ji(e) || !this._map.has(e)) && (this._map.get(e)
						.failedCountOfUserSide += 1, !0)
				}
			}, {
				key: "addCost",
				value: function(e, t) {
					return !(ji(e) || !this._map.has(e)) && (this._map.get(e).costArray.push(t),
						!0)
				}
			}, {
				key: "addFileSize",
				value: function(e, t) {
					return !(ji(e) || !this._map.has(e)) && (this._map.get(e).fileSizeArray
						.push(t), !0)
				}
			}, {
				key: "_calcSuccessRateOfBusiness",
				value: function(e) {
					if (ji(e) || !this._map.has(e)) return -1;
					var t = this._map.get(e),
						n = Mc(t.successCount / t.totalCount * 100, 2);
					return n > 100 && (n = 100), n
				}
			}, {
				key: "_calcSuccessRateOfPlatform",
				value: function(e) {
					if (ji(e) || !this._map.has(e)) return -1;
					var t = this._map.get(e),
						n = this._calcSuccessCountOfPlatform(e) / t.totalCount * 100;
					return (n = Mc(n, 2)) > 100 && (n = 100), n
				}
			}, {
				key: "_calcTotalCount",
				value: function(e) {
					return ji(e) || !this._map.has(e) ? -1 : this._map.get(e).totalCount
				}
			}, {
				key: "_calcSuccessCountOfBusiness",
				value: function(e) {
					return ji(e) || !this._map.has(e) ? -1 : this._map.get(e).successCount
				}
			}, {
				key: "_calcSuccessCountOfPlatform",
				value: function(e) {
					if (ji(e) || !this._map.has(e)) return -1;
					var t = this._map.get(e);
					return t.successCount + t.failedCountOfUserSide
				}
			}, {
				key: "_calcAvg",
				value: function(e) {
					return ji(e) || !this._map.has(e) ? -1 : e === Ep ? this._calcAvgSpeed(e) :
						this._calcAvgCost(e)
				}
			}, {
				key: "_calcAvgCost",
				value: function(e) {
					var t = this._map.get(e).costArray.length;
					if (0 === t) return 0;
					var n = 0;
					return this._map.get(e).costArray.forEach((function(e) {
						n += e
					})), parseInt(n / t)
				}
			}, {
				key: "_calcAvgSpeed",
				value: function(e) {
					var t = 0,
						n = 0;
					return this._map.get(e).costArray.forEach((function(e) {
						t += e
					})), this._map.get(e).fileSizeArray.forEach((function(e) {
						n += e
					})), parseInt(1e3 * n / t)
				}
			}, {
				key: "getStatResult",
				value: function(e) {
					var t = this._calcTotalCount(e);
					if (0 === t) return null;
					var n = this._calcSuccessCountOfBusiness(e),
						o = this._calcSuccessRateOfBusiness(e),
						r = this._calcSuccessCountOfPlatform(e),
						a = this._calcSuccessRateOfPlatform(e),
						s = this._calcAvg(e);
					return this.reset(e), {
						totalCount: t,
						successCountOfBusiness: n,
						successRateOfBusiness: o,
						successCountOfPlatform: r,
						successRateOfPlatform: a,
						avgValue: s
					}
				}
			}, {
				key: "reset",
				value: function(e) {
					ji(e) ? this._map.clear() : this._map.set(e, {
						totalCount: 0,
						successCount: 0,
						failedCountOfUserSide: 0,
						costArray: [],
						fileSizeArray: []
					})
				}
			}]), e
		}(),
		Gv = function() {
			function e(t) {
				var n = this;
				o(this, e), this._lastMap = new Map, this._currentMap = new Map, t.forEach((function(e) {
					n._lastMap.set(e, new Map), n._currentMap.set(e, new Map)
				}))
			}
			return a(e, [{
				key: "addMessageSequence",
				value: function(e) {
					var t = e.key,
						n = e.message;
					if (ji(t) || !this._lastMap.has(t) || !this._currentMap.has(t)) return !1;
					var o = n.conversationID,
						r = n.sequence,
						a = o.replace(Zn.CONV_GROUP, "");
					if (0 === this._lastMap.get(t).size) this._addCurrentMap(e);
					else if (this._lastMap.get(t).has(a)) {
						var s = this._lastMap.get(t).get(a),
							i = s.length - 1;
						r > s[0] && r < s[i] ? (s.push(r), s.sort(), this._lastMap.get(t).set(a,
							s)) : this._addCurrentMap(e)
					} else this._addCurrentMap(e);
					return !0
				}
			}, {
				key: "_addCurrentMap",
				value: function(e) {
					var t = e.key,
						n = e.message,
						o = n.conversationID,
						r = n.sequence,
						a = o.replace(Zn.CONV_GROUP, "");
					this._currentMap.get(t).has(a) || this._currentMap.get(t).set(a, []), this
						._currentMap.get(t).get(a).push(r)
				}
			}, {
				key: "_copyData",
				value: function(e) {
					if (!ji(e)) {
						this._lastMap.set(e, new Map);
						var t, n = this._lastMap.get(e),
							o = E(this._currentMap.get(e));
						try {
							for (o.s(); !(t = o.n()).done;) {
								var r = m(t.value, 2),
									a = r[0],
									s = r[1];
								n.set(a, s)
							}
						} catch (i) {
							o.e(i)
						} finally {
							o.f()
						}
						n = null, this._currentMap.set(e, new Map)
					}
				}
			}, {
				key: "getStatResult",
				value: function(e) {
					if (ji(this._currentMap.get(e)) || ji(this._lastMap.get(e))) return null;
					if (0 === this._lastMap.get(e).size) return this._copyData(e), null;
					var t = 0,
						n = 0;
					if (this._lastMap.get(e).forEach((function(e, o) {
							var r = v(e.values()),
								a = r.length,
								s = r[a - 1] - r[0] + 1;
							t += s, n += a
						})), 0 === t) return null;
					var o = Mc(n / t * 100, 2);
					return o > 100 && (o = 100), this._copyData(e), {
						totalCount: t,
						successCountOfMessageReceived: n,
						successRateOfMessageReceived: o
					}
				}
			}, {
				key: "reset",
				value: function() {
					this._currentMap.clear(), this._lastMap.clear()
				}
			}]), e
		}(),
		Uv = function(e) {
			i(r, e);
			var n = _(r);

			function r(e) {
				var t;
				o(this, r), (t = n.call(this, e))._className = "QualityStatModule", t.TAG =
					"im-ssolog-quality-stat", t.reportIndex = 0, t.wholePeriod = !1, t._qualityItems = [vp, Mp,
						yp, Ip, Sp, Tp, Ep, Dp, kp, Cp
					], t.REPORT_INTERVAL = 120, t.REPORT_SDKAPPID_BLACKLIST = [], t
				.REPORT_TINYID_WHITELIST = [], t._statInfoArr = [], t._avgRTT = new bv, t._avgE2EDelay = new wv;
				var a = [yp, Ip, Sp, Tp, Ep];
				t._rateMessageSend = new Pv(a);
				var s = [Dp, kp, Cp];
				t._rateMessageReceived = new Gv(s);
				var i = t.getInnerEmitterInstance();
				return i.on(im.CONTEXT_A2KEY_AND_TINYID_UPDATED, t._onLoginSuccess, h(t)), i.on(im
					.CLOUD_CONFIG_UPDATED, t._onCloudConfigUpdated, h(t)), t
			}
			return a(r, [{
				key: "_onLoginSuccess",
				value: function() {
					var e = this,
						t = this.getModule(ju),
						n = t.getItem(this.TAG, !1);
					!Tc(n) && $i(n.forEach) && (Gi.log("".concat(this._className,
							"._onLoginSuccess.get quality stat log in storage, nums=")
						.concat(n.length)), n.forEach((function(t) {
						e._statInfoArr.push(t)
					})), t.removeItem(this.TAG, !1))
				}
			}, {
				key: "_onCloudConfigUpdated",
				value: function() {
					var e = this.getCloudConfig("q_rpt_interval"),
						t = this.getCloudConfig("q_rpt_sdkappid_bl"),
						n = this.getCloudConfig("q_rpt_tinyid_wl");
					ji(e) || (this.REPORT_INTERVAL = Number(e)), ji(t) || (this
						.REPORT_SDKAPPID_BLACKLIST = t.split(",").map((function(e) {
							return Number(e)
						}))), ji(n) || (this.REPORT_TINYID_WHITELIST = n.split(","))
				}
			}, {
				key: "onCheckTimer",
				value: function(e) {
					this.isLoggedIn() && e % this.REPORT_INTERVAL == 0 && (this.wholePeriod = !
						0, this._report())
				}
			}, {
				key: "addRequestCount",
				value: function() {
					this._avgRTT.addRequestCount()
				}
			}, {
				key: "addRTT",
				value: function(e) {
					this._avgRTT.addRTT(e)
				}
			}, {
				key: "addMessageDelay",
				value: function(e) {
					this._avgE2EDelay.addMessageDelay(e)
				}
			}, {
				key: "addTotalCount",
				value: function(e) {
					this._rateMessageSend.addTotalCount(e) || Gi.warn("".concat(this._className,
						".addTotalCount invalid key:"), e)
				}
			}, {
				key: "addSuccessCount",
				value: function(e) {
					this._rateMessageSend.addSuccessCount(e) || Gi.warn("".concat(this
						._className, ".addSuccessCount invalid key:"), e)
				}
			}, {
				key: "addFailedCountOfUserSide",
				value: function(e) {
					this._rateMessageSend.addFailedCountOfUserSide(e) || Gi.warn("".concat(this
						._className, ".addFailedCountOfUserSide invalid key:"), e)
				}
			}, {
				key: "addCost",
				value: function(e, t) {
					this._rateMessageSend.addCost(e, t) || Gi.warn("".concat(this._className,
						".addCost invalid key or cost:"), e, t)
				}
			}, {
				key: "addFileSize",
				value: function(e, t) {
					this._rateMessageSend.addFileSize(e, t) || Gi.warn("".concat(this
						._className, ".addFileSize invalid key or size:"), e, t)
				}
			}, {
				key: "addMessageSequence",
				value: function(e) {
					this._rateMessageReceived.addMessageSequence(e) || Gi.warn("".concat(this
						._className, ".addMessageSequence invalid key:"), e.key)
				}
			}, {
				key: "_getQualityItem",
				value: function(e) {
					var n = {},
						o = Op[this.getNetworkType()];
					ji(o) && (o = 8);
					var r = {
						qualityType: Np[e],
						timestamp: Li(),
						networkType: o,
						extension: ""
					};
					switch (e) {
						case vp:
							n = this._avgRTT.getStatResult();
							break;
						case Mp:
							n = this._avgE2EDelay.getStatResult();
							break;
						case yp:
						case Ip:
						case Sp:
						case Tp:
						case Ep:
							n = this._rateMessageSend.getStatResult(e);
							break;
						case Dp:
						case kp:
						case Cp:
							n = this._rateMessageReceived.getStatResult(e)
					}
					return null === n ? null : t(t({}, r), n)
				}
			}, {
				key: "_report",
				value: function(e) {
					var t = this,
						n = [],
						o = null;
					ji(e) ? this._qualityItems.forEach((function(e) {
							null !== (o = t._getQualityItem(e)) && (o.reportIndex = t
								.reportIndex, o.wholePeriod = t.wholePeriod, n.push(
									o))
						})) : null !== (o = this._getQualityItem(e)) && (o.reportIndex = this
							.reportIndex, o.wholePeriod = this.wholePeriod, n.push(o)), Gi
						.debug("".concat(this._className, "._report"), n), this._statInfoArr
						.length > 0 && (n = n.concat(this._statInfoArr), this
					._statInfoArr = []);
					var r = this.getModule(Bu),
						a = r.getSDKAppID(),
						s = r.getTinyID();
					yc(this.REPORT_SDKAPPID_BLACKLIST, a) && !Ic(this.REPORT_TINYID_WHITELIST,
						s) && (n = []), n.length > 0 && this._doReport(n)
				}
			}, {
				key: "_doReport",
				value: function(e) {
					var n = this,
						o = {
							header: Ym(this),
							quality: e
						};
					this.request({
						protocolName: Zl,
						requestData: t({}, o)
					}).then((function() {
						n.reportIndex++, n.wholePeriod = !1
					})).catch((function(t) {
						Gi.warn("".concat(n._className, "._doReport, online:")
								.concat(n.getNetworkType(), " error:"), t), n
							._statInfoArr = n._statInfoArr.concat(e), n
							._flushAtOnce()
					}))
				}
			}, {
				key: "_flushAtOnce",
				value: function() {
					var e = this.getModule(ju),
						t = e.getItem(this.TAG, !1),
						n = this._statInfoArr;
					if (Tc(t)) Gi.log("".concat(this._className, "._flushAtOnce count:").concat(
						n.length)), e.setItem(this.TAG, n, !0, !1);
					else {
						var o = n.concat(t);
						o.length > 10 && (o = o.slice(0, 10)), Gi.log("".concat(this.className,
							"._flushAtOnce count:").concat(o.length)), e.setItem(this.TAG,
							o, !0, !1)
					}
					this._statInfoArr = []
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), this._report(), this
						.reportIndex = 0, this.wholePeriod = !1, this
						.REPORT_SDKAPPID_BLACKLIST = [], this.REPORT_TINYID_WHITELIST = [], this
						._avgRTT.reset(), this._avgE2EDelay.reset(), this._rateMessageSend
						.reset(), this._rateMessageReceived.reset()
				}
			}]), r
		}(ol),
		Fv = function() {
			function e(t) {
				o(this, e);
				var n = new Lp(Rp);
				this._className = "ModuleManager", this._isReady = !1, this._startLoginTs = 0, this._moduleMap =
					new Map, this._innerEmitter = null, this._outerEmitter = null, this._checkCount = 0, this
					._checkTimer = -1, this._moduleMap.set(Bu, new Km(this, t)), this._moduleMap.set(el, new Lv(
						this)), this._moduleMap.set(nl, new Uv(this)), this._moduleMap.set(Qu, new Tv(this)),
					this._moduleMap.set(Xu, new Av(this)), this._moduleMap.set(Pu, new Bm(this)), this
					._moduleMap.set(Gu, new av(this)), this._moduleMap.set(Uu, new Vm(this)), this._moduleMap
					.set(Fu, new V_(this)), this._moduleMap.set(Ku, new Tm(this)), this._moduleMap.set(qu,
						new Pm(this)), this._moduleMap.set(Vu, new Um(this)), this._moduleMap.set(ju, new Hm(
						this)), this._moduleMap.set(Hu, new zm(this)), this._moduleMap.set($u, new Xm(this)),
					this._moduleMap.set(Yu, new Zm(this)), this._moduleMap.set(zu, new ev(this)), this
					._moduleMap.set(Wu, new sv(this)), this._moduleMap.set(Ju, new iv(this)), this._moduleMap
					.set(Zu, new Ov(this)), this._moduleMap.set(tl, new Rv(this));
				var r = t.instanceID,
					a = t.oversea,
					s = t.SDKAppID,
					i = "instanceID:".concat(r, " oversea:").concat(a, " host:").concat(fc(), " ") +
					"inBrowser:".concat(ei, " inMiniApp:").concat(Zs, " SDKAppID:").concat(s, " UserAgent:")
					.concat(oi);
				Lp.bindEventStatModule(this._moduleMap.get(Hu)), n.setMessage("".concat(i)).end(), Gi.info(
						"SDK ".concat(i)), this._readyList = void 0, this._ssoLogForReady = null, this
					._initReadyList()
			}
			return a(e, [{
				key: "_startTimer",
				value: function() {
					this._checkTimer < 0 && (this._checkTimer = setInterval(this._onCheckTimer
						.bind(this), 1e3))
				}
			}, {
				key: "stopTimer",
				value: function() {
					this._checkTimer > 0 && (clearInterval(this._checkTimer), this
						._checkTimer = -1, this._checkCount = 0)
				}
			}, {
				key: "_onCheckTimer",
				value: function() {
					this._checkCount += 1;
					var e, t = E(this._moduleMap);
					try {
						for (t.s(); !(e = t.n()).done;) {
							var n = m(e.value, 2)[1];
							n.onCheckTimer && n.onCheckTimer(this._checkCount)
						}
					} catch (o) {
						t.e(o)
					} finally {
						t.f()
					}
				}
			}, {
				key: "_initReadyList",
				value: function() {
					var e = this;
					this._readyList = [this._moduleMap.get(Pu), this._moduleMap.get(Ku)], this
						._readyList.forEach((function(t) {
							t.ready((function() {
								return e._onModuleReady()
							}))
						}))
				}
			}, {
				key: "_onModuleReady",
				value: function() {
					var e = !0;
					if (this._readyList.forEach((function(t) {
							t.isReady() || (e = !1)
						})), e && !this._isReady) {
						this._isReady = !0, this._outerEmitter.emit(Qn.SDK_READY);
						var t = Date.now() - this._startLoginTs;
						Gi.warn("SDK is ready. cost ".concat(t, " ms")), this._startLoginTs =
							Date.now();
						var n = this._moduleMap.get($u).getNetworkType(),
							o = this._ssoLogForReady.getStartTs() + Oi;
						this._ssoLogForReady.setNetworkType(n).setMessage(t).start(o).end()
					}
				}
			}, {
				key: "login",
				value: function() {
					0 === this._startLoginTs && (Ri(), this._startLoginTs = Date.now(), this
						._startTimer(), this._moduleMap.get($u).start(), this
						._ssoLogForReady = new Lp(wp))
				}
			}, {
				key: "onLoginFailed",
				value: function() {
					this._startLoginTs = 0
				}
			}, {
				key: "getOuterEmitterInstance",
				value: function() {
					return null === this._outerEmitter && (this._outerEmitter = new Qm, F_(this
							._outerEmitter), this._outerEmitter._emit = this._outerEmitter
						.emit, this._outerEmitter.emit = function(e, t) {
							var n = arguments[0],
								o = [n, {
									name: arguments[0],
									data: arguments[1]
								}];
							this._outerEmitter._emit.apply(this._outerEmitter, o)
						}.bind(this)), this._outerEmitter
				}
			}, {
				key: "getInnerEmitterInstance",
				value: function() {
					return null === this._innerEmitter && (this._innerEmitter = new Qm, this
						._innerEmitter._emit = this._innerEmitter.emit, this._innerEmitter
						.emit = function(e, t) {
							var n;
							Ki(arguments[1]) && arguments[1].data ? (Gi.warn(
									"inner eventData has data property, please check!"),
								n = [e, {
									name: arguments[0],
									data: arguments[1].data
								}]) : n = [e, {
								name: arguments[0],
								data: arguments[1]
							}], this._innerEmitter._emit.apply(this._innerEmitter, n)
						}.bind(this)), this._innerEmitter
				}
			}, {
				key: "hasModule",
				value: function(e) {
					return this._moduleMap.has(e)
				}
			}, {
				key: "getModule",
				value: function(e) {
					return this._moduleMap.get(e)
				}
			}, {
				key: "isReady",
				value: function() {
					return this._isReady
				}
			}, {
				key: "onError",
				value: function(e) {
					Gi.warn("Oops! code:".concat(e.code, " message:").concat(e.message)),
						new Lp(Yg).setMessage("code:".concat(e.code, " message:").concat(e
							.message)).setNetworkType(this.getModule($u).getNetworkType())
						.setLevel("error").end(), this.getOuterEmitterInstance().emit(Qn.ERROR,
							e)
				}
			}, {
				key: "reset",
				value: function() {
					Gi.log("".concat(this._className, ".reset")), Ri();
					var e, t = E(this._moduleMap);
					try {
						for (t.s(); !(e = t.n()).done;) {
							var n = m(e.value, 2)[1];
							n.reset && n.reset()
						}
					} catch (o) {
						t.e(o)
					} finally {
						t.f()
					}
					this._startLoginTs = 0, this._initReadyList(), this._isReady = !1, this
						.stopTimer(), this._outerEmitter.emit(Qn.SDK_NOT_READY)
				}
			}]), e
		}(),
		qv = function() {
			function e() {
				o(this, e), this._funcMap = new Map
			}
			return a(e, [{
				key: "defense",
				value: function(e, t) {
					var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] :
						void 0;
					if ("string" != typeof e) return null;
					if (0 === e.length) return null;
					if ("function" != typeof t) return null;
					if (this._funcMap.has(e) && this._funcMap.get(e).has(t)) return this
						._funcMap.get(e).get(t);
					this._funcMap.has(e) || this._funcMap.set(e, new Map);
					var o = null;
					return this._funcMap.get(e).has(t) ? o = this._funcMap.get(e).get(t) : (o =
						this._pack(e, t, n), this._funcMap.get(e).set(t, o)), o
				}
			}, {
				key: "defenseOnce",
				value: function(e, t) {
					var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] :
						void 0;
					return "function" != typeof t ? null : this._pack(e, t, n)
				}
			}, {
				key: "find",
				value: function(e, t) {
					return "string" != typeof e || 0 === e.length || "function" != typeof t ?
						null : this._funcMap.has(e) ? this._funcMap.get(e).has(t) ? this
						._funcMap.get(e).get(t) : (Gi.log("SafetyCallback.find: 找不到 func —— "
								.concat(e, "/").concat("" !== t.name ? t.name : "[anonymous]")),
							null) : (Gi.log("SafetyCallback.find: 找不到 eventName-".concat(e,
							" 对应的 func")), null)
				}
			}, {
				key: "delete",
				value: function(e, t) {
					return "function" == typeof t && (!!this._funcMap.has(e) && (!!this._funcMap
						.get(e).has(t) && (this._funcMap.get(e).delete(t), 0 === this
							._funcMap.get(e).size && this._funcMap.delete(e), !0)))
				}
			}, {
				key: "_pack",
				value: function(e, t, n) {
					return function() {
						try {
							t.apply(n, Array.from(arguments))
						} catch (s) {
							var o = Object.values(Qn).indexOf(e);
							if (-1 !== o) {
								var r = Object.keys(Qn)[o];
								Gi.warn("接入侧事件 TIM.EVENT.".concat(r, " 对应的回调函数逻辑存在问题，请检查！"),
									s)
							}
							var a = new Lp(jg);
							a.setMessage("eventName:".concat(e)).setMoreMessage(s.message)
								.end()
						}
					}
				}
			}]), e
		}(),
		xv = function() {
			function e(t) {
				o(this, e);
				var n = {
					SDKAppID: t.SDKAppID,
					unlimitedAVChatRoom: t.unlimitedAVChatRoom || !1,
					scene: t.scene || "",
					oversea: t.oversea || !1,
					instanceID: hc()
				};
				this._moduleManager = new Fv(n), this._safetyCallbackFactory = new qv
			}
			return a(e, [{
				key: "isReady",
				value: function() {
					return this._moduleManager.isReady()
				}
			}, {
				key: "onError",
				value: function(e) {
					this._moduleManager.onError(e)
				}
			}, {
				key: "login",
				value: function(e) {
					return this._moduleManager.login(), this._moduleManager.getModule(Pu).login(
						e)
				}
			}, {
				key: "logout",
				value: function() {
					var e = this;
					return this._moduleManager.getModule(Pu).logout().then((function(t) {
						return e._moduleManager.reset(), t
					}))
				}
			}, {
				key: "destroy",
				value: function() {
					var e = this;
					return this.logout().finally((function() {
						e._moduleManager.stopTimer(), e._moduleManager.getModule(Qu)
							.dealloc();
						var t = e._moduleManager.getOuterEmitterInstance(),
							n = e._moduleManager.getModule(Bu);
						t.emit(Qn.SDK_DESTROY, {
							SDKAppID: n.getSDKAppID()
						})
					}))
				}
			}, {
				key: "on",
				value: function(e, t, n) {
					e === Qn.GROUP_SYSTEM_NOTICE_RECEIVED && Gi.warn(
							"！！！TIM.EVENT.GROUP_SYSTEM_NOTICE_RECEIVED v2.6.0起弃用，为了更好的体验，请在 TIM.EVENT.MESSAGE_RECEIVED 事件回调内接收处理群系统通知，详细请参考：https://web.sdk.qcloud.com/im/doc/zh-cn/Message.html#.GroupSystemNoticePayload"
							), Gi.debug("on", "eventName:".concat(e)), this._moduleManager
						.getOuterEmitterInstance().on(e, this._safetyCallbackFactory.defense(e,
							t, n), n)
				}
			}, {
				key: "once",
				value: function(e, t, n) {
					Gi.debug("once", "eventName:".concat(e)), this._moduleManager
						.getOuterEmitterInstance().once(e, this._safetyCallbackFactory
							.defenseOnce(e, t, n), n || this)
				}
			}, {
				key: "off",
				value: function(e, t, n, o) {
					Gi.debug("off", "eventName:".concat(e));
					var r = this._safetyCallbackFactory.find(e, t);
					null !== r && (this._moduleManager.getOuterEmitterInstance().off(e, r, n,
						o), this._safetyCallbackFactory.delete(e, t))
				}
			}, {
				key: "registerPlugin",
				value: function(e) {
					this._moduleManager.getModule(Wu).registerPlugin(e)
				}
			}, {
				key: "setLogLevel",
				value: function(e) {
					if (e <= 0) {
						console.log(["",
							" ________  ______  __       __  __       __  ________  _______",
							"|        \\|      \\|  \\     /  \\|  \\  _  |  \\|        \\|       \\",
							" \\$$$$$$$$ \\$$$$$$| $$\\   /  $$| $$ / \\ | $$| $$$$$$$$| $$$$$$$\\",
							"   | $$     | $$  | $$$\\ /  $$$| $$/  $\\| $$| $$__    | $$__/ $$",
							"   | $$     | $$  | $$$$\\  $$$$| $$  $$$\\ $$| $$  \\   | $$    $$",
							"   | $$     | $$  | $$\\$$ $$ $$| $$ $$\\$$\\$$| $$$$$   | $$$$$$$\\",
							"   | $$    _| $$_ | $$ \\$$$| $$| $$$$  \\$$$$| $$_____ | $$__/ $$",
							"   | $$   |   $$ \\| $$  \\$ | $$| $$$    \\$$$| $$     \\| $$    $$",
							"    \\$$    \\$$$$$$ \\$$      \\$$ \\$$      \\$$ \\$$$$$$$$ \\$$$$$$$",
							"", ""
						].join("\n")), console.log(
							"%cIM 智能客服，随时随地解决您的问题 →_→ https://cloud.tencent.com/act/event/smarty-service?from=im-doc",
							"color:#006eff"), console.log(
							"%c从v2.11.2起，SDK 支持了 WebSocket，小程序需要添加受信域名！升级指引: https://web.sdk.qcloud.com/im/doc/zh-cn/tutorial-02-upgradeguideline.html",
							"color:#ff0000");
						console.log(["", "参考以下文档，会更快解决问题哦！(#^.^#)\n",
							"SDK 更新日志: https://cloud.tencent.com/document/product/269/38492\n",
							"SDK 接口文档: https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html\n",
							"常见问题: https://web.sdk.qcloud.com/im/doc/zh-cn/tutorial-01-faq.html\n",
							"反馈问题？戳我提 issue: https://github.com/tencentyun/TIMSDK/issues\n",
							"如果您需要在生产环境关闭上面的日志，请 tim.setLogLevel(1)\n"
						].join("\n"))
					}
					Gi.setLevel(e)
				}
			}, {
				key: "createTextMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createTextMessage(e)
				}
			}, {
				key: "createTextAtMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createTextMessage(e)
				}
			}, {
				key: "createImageMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createImageMessage(e)
				}
			}, {
				key: "createAudioMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createAudioMessage(e)
				}
			}, {
				key: "createVideoMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createVideoMessage(e)
				}
			}, {
				key: "createCustomMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createCustomMessage(e)
				}
			}, {
				key: "createFaceMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createFaceMessage(e)
				}
			}, {
				key: "createFileMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createFileMessage(e)
				}
			}, {
				key: "createMergerMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createMergerMessage(e)
				}
			}, {
				key: "downloadMergerMessage",
				value: function(e) {
					return e.type !== Zn.MSG_MERGER ? x_(new G_({
						code: cd.MESSAGE_MERGER_TYPE_INVALID,
						message: Ud
					})) : Tc(e.payload.downloadKey) ? x_(new G_({
						code: cd.MESSAGE_MERGER_KEY_INVALID,
						message: Fd
					})) : this._moduleManager.getModule(Gu).downloadMergerMessage(e).catch((
						function(e) {
							return x_(new G_({
								code: cd.MESSAGE_MERGER_DOWNLOAD_FAIL,
								message: qd
							}))
						}))
				}
			}, {
				key: "createForwardMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).createForwardMessage(e)
				}
			}, {
				key: "sendMessage",
				value: function(e, t) {
					return e instanceof A_ ? this._moduleManager.getModule(Gu)
						.sendMessageInstance(e, t) : x_(new G_({
							code: cd.MESSAGE_SEND_NEED_MESSAGE_INSTANCE,
							message: Md
						}))
				}
			}, {
				key: "callExperimentalAPI",
				value: function(e, t) {
					return "handleGroupInvitation" === e ? this._moduleManager.getModule(qu)
						.handleGroupInvitation(t) : x_(new G_({
							code: cd.INVALID_OPERATION,
							message: gp
						}))
				}
			}, {
				key: "revokeMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).revokeMessage(e)
				}
			}, {
				key: "resendMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).resendMessage(e)
				}
			}, {
				key: "deleteMessage",
				value: function(e) {
					return this._moduleManager.getModule(Gu).deleteMessage(e)
				}
			}, {
				key: "getMessageList",
				value: function(e) {
					return this._moduleManager.getModule(Ku).getMessageList(e)
				}
			}, {
				key: "setMessageRead",
				value: function(e) {
					return this._moduleManager.getModule(Ku).setMessageRead(e)
				}
			}, {
				key: "getConversationList",
				value: function() {
					return this._moduleManager.getModule(Ku).getConversationList()
				}
			}, {
				key: "getConversationProfile",
				value: function(e) {
					return this._moduleManager.getModule(Ku).getConversationProfile(e)
				}
			}, {
				key: "deleteConversation",
				value: function(e) {
					return this._moduleManager.getModule(Ku).deleteConversation(e)
				}
			}, {
				key: "getMyProfile",
				value: function() {
					return this._moduleManager.getModule(Uu).getMyProfile()
				}
			}, {
				key: "getUserProfile",
				value: function(e) {
					return this._moduleManager.getModule(Uu).getUserProfile(e)
				}
			}, {
				key: "updateMyProfile",
				value: function(e) {
					return this._moduleManager.getModule(Uu).updateMyProfile(e)
				}
			}, {
				key: "getBlacklist",
				value: function() {
					return this._moduleManager.getModule(Uu).getLocalBlacklist()
				}
			}, {
				key: "addToBlacklist",
				value: function(e) {
					return this._moduleManager.getModule(Uu).addBlacklist(e)
				}
			}, {
				key: "removeFromBlacklist",
				value: function(e) {
					return this._moduleManager.getModule(Uu).deleteBlacklist(e)
				}
			}, {
				key: "getFriendList",
				value: function() {
					var e = this._moduleManager.getModule(xu);
					return e ? e.getLocalFriendList() : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "addFriend",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.addFriend(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "deleteFriend",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.deleteFriend(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "checkFriend",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.checkFriend(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "getFriendProfile",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.getFriendProfile(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "updateFriend",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.updateFriend(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "getFriendApplicationList",
				value: function() {
					var e = this._moduleManager.getModule(xu);
					return e ? e.getLocalFriendApplicationList() : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "acceptFriendApplication",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.acceptFriendApplication(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "refuseFriendApplication",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.refuseFriendApplication(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "deleteFriendApplication",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.deleteFriendApplication(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "setFriendApplicationRead",
				value: function() {
					var e = this._moduleManager.getModule(xu);
					return e ? e.setFriendApplicationRead() : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "getFriendGroupList",
				value: function() {
					var e = this._moduleManager.getModule(xu);
					return e ? e.getLocalFriendGroupList() : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "createFriendGroup",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.createFriendGroup(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "deleteFriendGroup",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.deleteFriendGroup(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "addToFriendGroup",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.addToFriendGroup(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "removeFromFriendGroup",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.removeFromFriendGroup(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "renameFriendGroup",
				value: function(e) {
					var t = this._moduleManager.getModule(xu);
					return t ? t.renameFriendGroup(e) : x_({
						code: cd.CANNOT_FIND_MODULE,
						message: fp
					})
				}
			}, {
				key: "getGroupList",
				value: function(e) {
					return this._moduleManager.getModule(qu).getGroupList(e)
				}
			}, {
				key: "getGroupProfile",
				value: function(e) {
					return this._moduleManager.getModule(qu).getGroupProfile(e)
				}
			}, {
				key: "createGroup",
				value: function(e) {
					return this._moduleManager.getModule(qu).createGroup(e)
				}
			}, {
				key: "dismissGroup",
				value: function(e) {
					return this._moduleManager.getModule(qu).dismissGroup(e)
				}
			}, {
				key: "updateGroupProfile",
				value: function(e) {
					return this._moduleManager.getModule(qu).updateGroupProfile(e)
				}
			}, {
				key: "joinGroup",
				value: function(e) {
					return this._moduleManager.getModule(qu).joinGroup(e)
				}
			}, {
				key: "quitGroup",
				value: function(e) {
					return this._moduleManager.getModule(qu).quitGroup(e)
				}
			}, {
				key: "searchGroupByID",
				value: function(e) {
					return this._moduleManager.getModule(qu).searchGroupByID(e)
				}
			}, {
				key: "getGroupOnlineMemberCount",
				value: function(e) {
					return this._moduleManager.getModule(qu).getGroupOnlineMemberCount(e)
				}
			}, {
				key: "changeGroupOwner",
				value: function(e) {
					return this._moduleManager.getModule(qu).changeGroupOwner(e)
				}
			}, {
				key: "handleGroupApplication",
				value: function(e) {
					return this._moduleManager.getModule(qu).handleGroupApplication(e)
				}
			}, {
				key: "getGroupMemberList",
				value: function(e) {
					return this._moduleManager.getModule(Vu).getGroupMemberList(e)
				}
			}, {
				key: "getGroupMemberProfile",
				value: function(e) {
					return this._moduleManager.getModule(Vu).getGroupMemberProfile(e)
				}
			}, {
				key: "addGroupMember",
				value: function(e) {
					return this._moduleManager.getModule(Vu).addGroupMember(e)
				}
			}, {
				key: "deleteGroupMember",
				value: function(e) {
					return this._moduleManager.getModule(Vu).deleteGroupMember(e)
				}
			}, {
				key: "setGroupMemberMuteTime",
				value: function(e) {
					return this._moduleManager.getModule(Vu).setGroupMemberMuteTime(e)
				}
			}, {
				key: "setGroupMemberRole",
				value: function(e) {
					return this._moduleManager.getModule(Vu).setGroupMemberRole(e)
				}
			}, {
				key: "setGroupMemberNameCard",
				value: function(e) {
					return this._moduleManager.getModule(Vu).setGroupMemberNameCard(e)
				}
			}, {
				key: "setGroupMemberCustomField",
				value: function(e) {
					return this._moduleManager.getModule(Vu).setGroupMemberCustomField(e)
				}
			}, {
				key: "setMessageRemindType",
				value: function(e) {
					return this._moduleManager.getModule(Vu).setMessageRemindType(e)
				}
			}]), e
		}(),
		Vv = {
			login: "login",
			logout: "logout",
			destroy: "destroy",
			on: "on",
			off: "off",
			ready: "ready",
			setLogLevel: "setLogLevel",
			joinGroup: "joinGroup",
			quitGroup: "quitGroup",
			registerPlugin: "registerPlugin",
			getGroupOnlineMemberCount: "getGroupOnlineMemberCount"
		};

	function Kv(e, t) {
		if (e.isReady() || void 0 !== Vv[t]) return !0;
		var n = new G_({
			code: cd.SDK_IS_NOT_READY,
			message: "".concat(t, " ").concat(_p,
				"，请参考 https://web.sdk.qcloud.com/im/doc/zh-cn/module-EVENT.html#.SDK_READY")
		});
		return e.onError(n), !1
	}
	var Bv = {},
		jv = {};
	return jv.create = function(e) {
		var n = 0;
		if (qi(e.SDKAppID)) n = e.SDKAppID;
		else if (Gi.warn("TIM.create SDKAppID 的类型应该为 Number，请修改！"), n = parseInt(e.SDKAppID), isNaN(n))
			return Gi.error("TIM.create failed. 解析 SDKAppID 失败，请检查传参！"), null;
		if (n && Bv[n]) return Bv[n];
		Gi.log("TIM.create");
		var o = new xv(t(t({}, e), {}, {
			SDKAppID: n
		}));
		o.on(Qn.SDK_DESTROY, (function(e) {
			Bv[e.data.SDKAppID] = null, delete Bv[e.data.SDKAppID]
		}));
		var r = function(e) {
			var t = Object.create(null);
			return Object.keys(ku).forEach((function(n) {
				if (e[n]) {
					var o = ku[n],
						r = new so;
					t[o] = function() {
						var t = Array.from(arguments);
						return r.use((function(t, o) {
							return Kv(e, n) ? o() : x_(new G_({
								code: cd.SDK_IS_NOT_READY,
								message: "".concat(n, " ")
									.concat(_p, "。")
							}))
						})).use((function(e, t) {
							if (!0 === Ec(e, Du[n], o)) return t()
						})).use((function(t, o) {
							return e[n].apply(e, t)
						})), r.run(t)
					}
				}
			})), t
		}(o);
		return Bv[n] = r, Gi.log("TIM.create ok"), r
	}, jv.TYPES = Zn, jv.EVENT = Qn, jv.VERSION = "2.13.1", Gi.log("TIM.VERSION: ".concat(jv.VERSION)), jv
}));